Giving up on Venture Capital raising - <AUTHOR> https://www.linkedin.com/pulse/given-up-venture-capital-raising-congratulations-henrik-molin <comment><USER2> Good points, but there's still the fundamental problem of investing: either you try to make profits now, on the scale that you can do that with your current resources, or you try to make a bigger bang later on which will pay for your early losses. It's the same as "should I go to university or start working now?" or "Should I spend my days fishing with this spear or invent a better way, eg a net? If I take too long I'll starve."

All the points he makes have a double-edged quality to them: keep more of the company, but what if getting a VC boost would give me a smaller slice of a bigger pie? Build something small now, or build the killer product for next year? Keep things simple, or home run later? Focus on things that matter, or pay for someone to come in and cover those bases? Build culture, or let it emerge?

There's an ecological aspect to this as well. If a lot of firms can make big bets, it reduces opportunity for a smaller player to grow into the niche that's being fought for.

<comment><USER3> There is another alternative to VCs: the traditional business loan. It strikes me as a middle road here, since it won't be as large, or be capable of multiple "rounds", but you retain control of your company.

<comment><USER4> Definitely an option, but remember that small business loans generally require collateral and are much harder to come by than VC money if you aren't profitable. For a startup targeting rapid growth, there often isn't collateral (unless you want to personally guarantee the loan, which brings in all kinds of risk factors), or profit to speak of.

</comment></comment></comment><comment><USER5> "Sales is what you want your CEO to focus on, not flight-jumping to deliver investor pitches, 3-minute conference quickfire showcases and endless networking."

Strongly agree with this one although networking especially in a startup should not be underestimated. Its extremely important especially in smaller regions (like mine) to build up a solid network as a company noone has on the radar.

<comment><USER6> Networking at events where you are customers are can be the start of a sales funnel.

</comment></comment><comment><USER7> Just do an ICO.

<comment><USER8> likesharecoin

</comment></comment><comment><USER9> hm dead link anyone?

<comment><USER10> [https://pastebin.com/Z3W8X3BR](https://pastebin.com/Z3W8X3BR)

</comment></comment><comment><USER11> Can't read the post without creating a LinkedIn account. Anyone have alternate source?

Edit: Turns out LinkedIn doesn't like my VPN.

<comment><USER12> Nor mine :(

But: [https://webcache.googleusercontent.com/search?q=cache:emrfbz...](https://webcache.googleusercontent.com/search?q=cache:emrfbzINTvEJ:https://www.linkedin.com/pulse/given- up-venture-capital-raising-congratulations-henrik- molin+&cd=1&hl=en&ct=clnk&gl=us)</comment></comment>


Chrome latest update (76?) failing - <AUTHOR> KSInstallAction install script failure. Exit code: 12. Standard error output: "goobspatch: old hash mismatch: 6f3b7e392fba8665c971a110254954a86ed2e56e != 5c333879450103300e0ca50c73676b2dd9acac13\ndirpatcher.sh: couldn't create /Applications/Google Chrome.app/Contents/Frameworks/Google Chrome Framework.framework/Versions/76.0.3809.87/Google Chrome Framework by applying /tmp/KSInstallAction.5NCiBx2Wyy/m/.patch/framework_75.0.3770.100_76.0.3809.87.dirpatch/Google Chrome Framework$gbs to /Applications/Google Chrome.app/Contents/Frameworks/Google Chrome Framework.framework/Versions/75.0.3770.100/Google Chrome Framework\n.keystone_install: dirpatcher of versioned directory failed, status 13\n". <comment><USER2> Many others are facing the same issue ([https://support.google.com/chrome/thread/9379810?hl=en](https://support.google.com/chrome/thread/9379810?hl=en)). But still no official reply.

</comment><comment><USER3> I don't know why but when I read the article I was on version 75.0.3700.142 and updated to version 76.0.3809.87 successfully. That's really weird.</comment>


Google Said to Endorse Qualcomm's Fledgling Server-Chip Efforts - <AUTHOR> http://www.bloomberg.com/news/articles/2016-02-03/google-said-to-endorse-qualcomm-s-fledgling-server-chip-efforts-ik6ud7qg <comment><USER2> This is a significant turnaround, because top infrastructure people including Urs had been saying that arm cores would never be sufficient for single- threaded performance[1] and most recently we thought they were supporting OpenPower as competition to intel.[2]

> Google, which purchases as many as 300,000 processors every quarter for > servers it manufactures, has greater buying power than most.

Good lord!

[1] [http://www.computer.org/csdl/mags/mi/2010/04/mmi2010040020-a...](http://www.computer.org/csdl/mags/mi/2010/04/mmi2010040020-abs.html)

[2] [http://www.nextplatform.com/2015/03/18/google-looks-ahead- to...](http://www.nextplatform.com/2015/03/18/google-looks-ahead-to-openpower- systems/)

Background, great book "The Datacenter as a Computer": [http://www.morganclaypool.com/doi/abs/10.2200/S00516ED2V01Y2...](http://www.morganclaypool.com/doi/abs/10.2200/S00516ED2V01Y201306CAC024)

</comment><comment><USER3> Can't really blame them for trying to diversify their suppliers.

<comment><USER4> So why not help AMD with ZEN in this regards?

<comment><USER5> Helping to create a viable ARM server market, if that's possible, is an entirely different and potentially much more rewarding thing than making another bet on a perennial _long term_ loser like AMD (sometime before their most recent peak and decline in the x86_64 domain it was noted that they'd _never_ made their shareholders money if they'd bought and held their stock).

Intel is kind of the opposite, they're usually very good (and have almost always been a fab line powerhouse (the major exception would be when they exited the DRAM market)), and only occasionally get really wedged. At this point, I wouldn't expect support for AMD to do more than drop Intel's prices a bit, and maybe not at all given how the server, desktop, laptop and mobile markets are moving.

It's also an indirect bet on TSMC vs. GlobalFoundries and/or Samsung.</comment></comment></comment>


Datashader: turns even the largest data into images, accurately - <AUTHOR> http://datashader.org/ <comment><USER2> Looks like a great project. Contrary to other comments, rendering != visualization. This project seems to have paid attention to lots of the seemingly little but critical details of this type of visualization that are a pain to handle yourself (anti-aliasing of multi-scale data, terrain shading, large- and out-of-core visualization).

Any one of these topics can bring a visualization project to a screeching halt, or make the results look misleading or bad.

Even better that they built a tool that works with existing libraries, rather than replacing them. Good work!

<comment><USER3> > anti-aliasing of multi-scale data, terrain shading, large- and out-of-core > visualization

Webgl will basically do all of that for you, including the out of core if you can stream the data in.

<comment><USER2> No, it can't. WebGL is at a completely different level of the stack than Datashader. WebGL is even lower level than what most people use for 3D graphics (hence threejs and babylonjs).

Data visualization is at a higher semantic level than rendering; ideally you don't want to deal with pixels and polygons. D3, for instance, binds graphical primitives (usually in SVG) with data representations but requires more programming to do actual data visualization (and that's why a bunch of software layers on top of D3). Bokeh deals with still higher level primitives closer to the data set level (plotting and charts).

And Datashader carves out a niche where there's too much data to have a 1:1 ratio of data element to graphical primitive on the screen. It does that by rasterizing, but then also handling the hard part of mapping backwards from image to data for selection and interactivity (I hope that's right; I got it from watching the 2016 video).

Anyone who has had to do this stuff for a living knows it is hard to do right, and that good modular tools are always welcome.

I don't see how this repeated "it's just like X" line of responses is benefiting the discussion. Datashader is not just like WebGL or basic low- level rendering, any more than D3 is just SVG or web apps are just TCP connections. Completely different levels of abstraction with lots of value add in between (and hard work, I'm sure).

<comment><USER3> I didn't say that webgl would do everything this can do, I said it would do the things I copied from the post I replied to.

Again, my issue is that they seem to put a lot of focus on this having some sort of sophisticated new rendering when it seems to be marketing of trivial techniques. People seem to like what this library does, but they didn't invent new rendering algorithms and their buzzwords and clever names just show a lack of awareness of what they are doing in the rendering department.

<comment><USER4> I'm not sure if you're objecting to the name "Datashader", but surely every library needs a name, and this one is accurate in that it allows the sort of shading that one does for 3D rendering to be applied to 2D data plotting. Or are there other buzzwords used in the docs you find objectionable?

<comment><USER3> If I said I was an expert in 'big data visualization with billions of points' and had written my own 'out of core' rendering library that I dubbed 'data shader', complete with a paper where I coined the term 'Abstract Rendering' or 'AR' for short, then you found out that I was just reading points from disk and drawing them with opengl's draw points function, what would you think?

The term 'out of core' rendering comes from raytracing, where you really do need all the geometry available. They are applying it to trivial accumulation where it was never a problem in the first place. That's like me writing a paper on how to make a balloon air tight. That's how it has always worked, why would I take credit for something that was never a problem?

<comment><USER4> Sigh. Datashader is not a paper, it's an actual usable piece of software, so it should be compared to other tools and libraries for rendering data. Unlike nearly ever other 2D plotting library available for Python, it can operate in core or out of core, so it's entirely appropriate to advertise that fact (why hide it?). Unlike OpenGL's point drawing functions and nearly every other 2D plotting library available for Python, it avoids overplotting and z-ordering issues that make visualizations misleading (so why hide that?). Unlike NumPy's histogram2D, it allows you to define what it means to aggregate the contents of each bin (mean, min, std, etc.), to focus on different aspects of your data. It's a mystery to me why you think Datashader should somehow fail to advertise what it's useful for!

<comment><USER3> > Datashader is not a paper

[https://www.semanticscholar.org/paper/Abstract- rendering%3A-...](https://www.semanticscholar.org/paper/Abstract- rendering%3A-out-of-core-rendering-for-Cottam- Lumsdaine/41a157f01b27bcf20143fc578a0db49f4e7b90f3)

You keep defending the project as a whole while not confronting the fact that they are touting rendering breakthroughs, while I have given a lot of explanation of why there are no rendering breakthroughs and the actual rendering, no matter where it is done and no matter how much data is used, is trivial. I'm not sure what can help you focus in on the point I'm making here, I haven't strayed from it. This isn't about the workflow or the language used or anything else. It is about false claims and buzzwords to make people think that it is solving rendering problems that have never existed like 'accuracy' and 'big data' ( in the context of these visualizations ).

<comment><USER5> They are touting it specifically in the context of the visualization of very large datasets.

The fact that their software exists is itself a breakthrough. It enabled me to do things that other equivalent tools (such as in statistical packages) could not allow. I would have been reduced to directly implementing my rendering pipelines, and I would also have had to make many of the same design decisions they made, such as doing things out of core.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER6> Datashader is a great project. Very fast, very easy to use. You can throw a lot of data at it in a notebook and get back a zoomable interactive pane.

Here's a 2016 talk on it: [https://www.youtube.com/watch?v=fB3cUrwxMVY](https://www.youtube.com/watch?v=fB3cUrwxMVY)

There's likely a lot of improvements since then, but that should help show some of the core parts and explain why it's a useful tool.

</comment><comment><USER7> [https://anaconda.org/jbednar/gerrymandering/notebook](https://anaconda.org/jbednar/gerrymandering/notebook)

I wish more people were outraged at this kind of election tampering. Great visualizations though! Zoom in on some of those tight masses of black outlines. The shapes are ridiculous. Maryland 3rd? Come on.

</comment><comment><USER8> I've used datashader for plotting NGS (Next Generation Sequencing) enrichments. At the time I had to hack together the ability to use the polygon select tool on the data, but it worked and blew my mind.

Very elegant solution to a difficult problem (overplotting).

<comment><USER9> Do you have any examples of this you could point to online? I am looking at different visualization tools for various NGS-based analyses currently.

<comment><USER8> I do. I remember posting this to the mailing list. I don't have an example calculating enrichments though. We simply group by read and divide using the frequencies and then plot one enrichment vs another. This way we can see how one sequence enriches between conditions. There's more to it than that but this will produce a plot similar to the one in the attachment in the thread linked below.

[https://groups.google.com/a/continuum.io/forum/m/#!msg/bokeh...](https://groups.google.com/a/continuum.io/forum/m/#!msg/bokeh/BdQV54W0WnY/OHjlMAtqBAAJ)

Edit: here's a link to the plot I refer to: [https://10826817673355204906.googlegroups.com/attach/e6e58ad...](https://10826817673355204906.googlegroups.com/attach/e6e58ade6248/Screen%20Shot%202017-05-04%20at%202.47.07%20PM.png?part=0.1&view=1&vt=ANaJVrHL6xR_HvljfCodWVnBwALwADyL8wIpWga5D7Q5DzAHYPOsTTpqg193EuAC81xxXb- toP7Nv8y724yMogPSNlLXeU6lZXJ-Trm3r5-zpIVHEe2fpUI)

</comment></comment></comment><comment><USER10> > Turns even the largest data into images, _accurately_

The first image, the image of the USA, seems really mis-representative to me. LA and NYC should be way way way more bright in relation to everything else than the entire area east of the Mississippi.

At least to my eyes that map makes it look like parts of Denver, Kansas City, Salt Lake City, Atlanta, and the San Joaquin Valley are just as dense as Manhattan.

Atlanta's population density 630 per square mile

Manhattan's population density 70826 per square mile

It seems like an accurate data image would have Atlanta's brightness 1/100th of Manhattan's. Basically it looks like they saturated out at around 250 people do anything over 250 people is the same brightness.

<comment><USER4> By default, Datashader accurately conveys the shape of the distribution in a way that the human visual system can process. If you want a linear representation, you can do that easily; see the first plot in [http://datashader.org/topics/census.html](http://datashader.org/topics/census.html) , but you'll quickly see that the resulting plot completely fails to show that there are any patterns anywhere besides the top few population hotspots, which is highly unrepresentative of the actual patterns in this data. There is no saturation here; what it's doing in the homepage image is basically a rank- order encoding, where the top brightness value is indeed shared by several high-population pixes, the next brightness value is shared by the next batch of populations, etc. Given only 256 possible values, there has to be some grouping, but it's not saturating.

</comment></comment><comment><USER11> Looks like a really cool project. One thing that I would be interested in see would be using Datashader as a dynamic visualisation library - for example, generative art projects. Probably not the main interest of data visualisation practitioners but hey, if you've got a sweet pipeline to render all those points, why not?

<comment><USER4> The attractors at [http://datashader.org/topics/strange_attractors.html](http://datashader.org/topics/strange_attractors.html) are probably closer to art than science...

</comment></comment><comment><USER12> What license is this project using? The repo has a license but besides the provisions listed there I don't see any standard license.

<comment><USER13> The repo has a standard 3-clause BSD license.

</comment></comment><comment><USER14> This actually gave me an interesting idea regarding bitcoin passphrase mnemonics.

Instead of text we could use the same algorithm to generate images.

So you could have an index of images and generate them. I'm actually wondering if you could use nouns and verbs to maybe make stories if you could mutate the nouns reliably.

Like 'bird flying' vs 'bird sleeping' ...

This could help to remember long passphrases visually which people seem to be better at.

</comment><comment><USER15> Is there anything similar for network graphs?

<comment><USER16> Yep -- at [https://github.com/graphistry/pygraphistry](https://github.com/graphistry/pygraphistry), we started by making millions of nodes/edges interactive. If you use notebooks, can signup on our site and get going. The trick is we connect GPUs in the browser to GPUs in the cloud, and encapsulate it enough that you can stick to writing standard SQL/pandas/etc.

We've been curious about server-side static tile rendering for larger graphs, but has been on the back-burner. (We already connect to GPUs on the server, so not rocket science.) Currently, we're actively increasing how much can be ingested + computed on, such as for finding influencers, communities & rings, etc. However, visualizing that hasn't been an operational priority for our users. More useful to generate the communities, and then either inspect individual ones, or see how communities stitch together: quickly run out of pixels otherwise due to too many edges. Likewise, we're building connectors to gigascale-petascale graph DBs: titan, janus, aws neptune, tigergraph, spark graphx, etc.

We still are interested, but more for when we start supporting geographic maps: you can see that is the primary use for datashader. Also, because data art is fun :)

<comment><USER4> Geographic maps aren't the primary use for datashader; those are just easy examples that people can appreciate without a lot of explanation. In practice we use it for _any_ large datasets that we don't want to subsample before visualizing them.

<comment><USER16> Yes, definitely more capable. I've seen them primarily used in scatterplots (x, y, maybe z) + maps. Curious where else you're seeing the 80/20 breakdown if not there...</comment></comment></comment></comment>


Tracing the Supply Chain Attack on Android - <AUTHOR> https://krebsonsecurity.com/2019/06/tracing-the-supply-chain-attack-on-android-2/ <comment><USER2> Supply chain integrity has _always_ been a problem in China.

I'm surprised it has taken this long to actually have an issue that reaches the public relations level.

</comment><comment><USER3> It's worth noting that while the affected phones run Android and Google has officially commented on this, the affected phones don't appear to be Pixel or Nexus phones or anything like that. I got the impression that the affected phones were first-party models based on the first paragraph for some reason. That does not appear to be the case.

</comment><comment><USER4> I imagine there might be more models affected. Some of the names there (such as Doogee) also act as "OEM manufacturers" where they white-label their products and sell them wholesale, internationally, with different branding.

</comment><comment><USER5> If you look on Quora for any questions related to the current trade war, the "experts" are all in unison blaming it completely on US being somehow afraid of China and Chinese tech, while China being completely innocent and nice.

<comment><USER6> It's not China that's currently (or in the last year has been) embroiled in trade wars with all of its major trading partners.

There's exactly one event that one can trace this trade war back to: Trump's election.

<comment><USER5> the trade war with China is separate. This date backs to the TPP which Obama was trying to accomplish as well as a response to blatant ip theft, cyber attacks, and corporate espionage by Chinese govt.</comment></comment></comment>


Ruby 2.1.3 is released - <AUTHOR> https://www.ruby-lang.org/en/news/2014/09/19/ruby-2-1-3-is-released/

<comment><USER2> Very nice! It looks like this might solve memory usage issues in low-memory environments such as cloud services like heroku?

Stock Ruby 2.1 was unusable on heroku because of this issue.

[https://bugs.ruby-lang.org/issues/9607](https://bugs.ruby- lang.org/issues/9607)

<comment><USER3> Can confirm, I used this backport [https://twitter.com/hone02/status/512254413000695808](https://twitter.com/hone02/status/512254413000695808) codetriage.com memory usage dropped by about 200mb, saw my request time drop and CPU load drop. Freaking amazing <3 <3 <3

</comment></comment><comment><USER4> A big thank you to all committers, Ruby keeps getting nicer and nicer with every release. Keep up the good work everyone!

</comment><comment><USER5> I'm a longtime Ruby user (among a number of other languages). I feel very productive in Ruby right now, with Python being a close second. It's also vital to the functioning of my current startup (along with Go).

And yet -- I feel like Ruby is growing stagnant. Don't get me wrong: 2.x has brought lots of performance improvements, and some very smart people are constantly making it better, for which I'm eternally grateful. But I can't name a single 2.0-specific feature that I actually use. Refinements were the biggest thing I can think of, and in an informal survey of some other CTOs I know on Ruby stacks, nobody was directly using them.

Additionally, for a lot of the features I've come to love in other languages (e.g. pattern matching), my impression is that no one's talking about them in the Ruby community. Much of Ruby's success came from making it one of the most enjoyable languages to develop in, and that's unquestionably still there. But I stare wistfully across the sea to some of alternative choices, and I wonder how much longer that will be true.

<comment><USER6> Ruby 2.0 introduced named parameters with default values and 2.1 introduced required named parameters. These are useful.

For example, there are cases where you can replace options hashes with named parameters and get rid of guard clauses for key presence as well as lines that assign default values to keys in the options hash. And you don't have to index an options hash of course. The splat operator can be used to pass upstream options hashes to downstream methods taking named parameters so you can just refactor the downstream-most methods taking the options hash and get all these benefits.

<comment><USER5> This is true, and is a good counterexample to my point since I do use these on an everyday basis.

</comment></comment></comment><comment><USER7> TIL that Ruby uses GNU ChangeLog style commit messages. Makes for a really nice change log. I wish more projects adopted this style.

<comment><USER8> Really? I dislike them intensely. They always seem "inside-out" to me and it makes it really hard to group things into releases visually. I like Debian's changelogs so much better because they are release oriented.

</comment></comment><comment><USER9> I used to develop Ruby C extensions a lot, but I'm just now getting back into the game. What Ruby versions are considered "current" enough that libraries need to support them? Is the 1.9 line still in wide use? How far back in the 2.1 line is in common use?

Normally I wouldn't worry too much about this, except that I've heard that the Ruby C API changes substantially from release to release. Is this true? Anything in particular to watch out for?

<comment><USER6> You can expect libraries to follow Rails' lead.

The current rails (4.x) supports 1.9, but next year's rails (5.0) will require 2.x. So about the time that rails 5 comes out I would try to be ready to run 2.x in order to enjoy library compatibility.

<comment><USER9> That makes sense.

According to the download page ([http://rubyonrails.org/download/](http://rubyonrails.org/download/)), the current Rails version requires Ruby 1.9.3 or newer.

Hopefully testing with Ruby 1.9.3 and the newest (Ruby 2.1.3) will give enough assurance that it works on all the versions in between.

</comment></comment></comment><comment><USER10> Without being told to use a VM, installing Linux, buying a Mac, and without settling for the 2.0.0-p481 release of RubyInstaller; is there any way for a user to install _this_ version of Ruby on Windows?

<comment><USER11> I don't mean to come off as an ass, but just curious.

Why do you want to develop ruby (or anything else) with windows? Especially since most servers (where ruby is popular) are linux servers? All colleagues I've had running windows always seem to have to jump so many hoops that the *nix crows don't.

Also, no unix shell and package managers, how do you deal with it?

<comment><USER10> I have used Ubuntu and Mac OS in the past, but I am currently favouring doing all of my work on Windows. All of the tools I need run perfectly fine on Windows (and many of them, not on Linux at all), and it would be a hindrance to switch to another operating system.

It is only Ruby which is difficult to keep up to date on Windows. My question was to try and find a solution.

I have tried using a VM (VirtualBox and VMWare), but it is not a desirable work flow. I currently use RubyInstaller.

</comment></comment></comment><comment><USER12> I don't like Odd numbers and hope 2.1.4 comes out soon lol j.k :D

This upgrade will be very useful if you use threads or deploy your rails server in threaded mode like in Puma.

</comment><comment><USER13> I hope to see whether Ruby could create a platform like Wordpress with that strong community. A simple plugin system for the world to use and extend. Is PHP stronger Ruby ?

<comment><USER14> PHP has more ubiquity, so it's a least common denominator sort of thing. You can find tons of hosts running a LAMP stack, but not so many supporting Ruby. That is mainly because the tooling needed to maintain a Ruby application server has some additional complexity over PHP, which is mostly plug-and-play. Passenger helps a lot with that, but it's nowhere near the distribution level of PHP, so that is restricting the ecosystem currently.

Basically, most people looking to setup a WordPress install can't deal with even the simplest CLI. So things like Heroku or a one-click Digital Ocean box are out.

This could be a good idea for a startup...

<comment><USER15> I've always thought, if there was a simple, efficient way to simply <?Ruby puts("use Ruby like PHP") ?> then a lot of good stuff could happen.</comment></comment></comment>


Ask HN: What is today's equivalent of a bootstrap HTML web app? - <AUTHOR> I have experience launching simple websites with a flask backend, and in the past I have used bootstrap for the front-end - I just copied one of the bootstrap starter templates and with minor modifications it looked acceptable for a basic app.
That seemed to be true five years back. What is the ideal workflow for someone who wants to focus on the backend for their mvp and want the easiest to provision frontend solution? Something that looks acceptable in design and responsiveness out of the box, and ideally plays well with flask.
I would sincerely prefer something in bare html and not go the react route (it's honestly still a steep learning curve, I'd much rather stick to jquery + HTML, but open to change for sure). <comment><USER2> "Class-less CSS"[1] is probably the modern Bootstrap equivalent, if you don't want to go with Bootstrap or a competitor (like Foundation).

I don't love any of these, but ended up with awsm.css.

Also, re: React: I dislike it for a lot of reasons, but if you're a decent programmer, you can pick it up in under a day. Make sure you start out with create-react-app[2] and use the TypeScript template[3].

1\. [https://github.com/dbohdan/classless- css](https://github.com/dbohdan/classless-css)

2\. [https://create-react-app.dev/docs/getting-started/](https://create-react- app.dev/docs/getting-started/)

3\. [https://create-react-app.dev/docs/adding-typescript/](https://create- react-app.dev/docs/adding-typescript/)

</comment><comment><USER3> Stick with bootstrap, it still works great and tons of sites still use it. It is even used in current react and vue templates so all good.

There are people that hate bootstrap but if you know it and want to focus on backend and just get an mvp front end done stick with what you know.

Personally I still really prefer jquery, and bootstrap but it isn't the fad today.

FWIW: We use Vue on our product and it is based on a bootstrap template which made it a super easy to transition. And I do like vue as it has made things super clean and easy without getting in the way with a heavy framework

<comment><AUTHOR> Thanks, will give Vue a try!</comment></comment>


Performance-oriented Congestion Control - <AUTHOR> http://modong.github.io/pcc-page/ <comment><USER2> This was on the front page yesterday, discussion here: [https://news.ycombinator.com/item?id=8862453](https://news.ycombinator.com/item?id=8862453)</comment>


Luxonis wants to use computer vision to protect cyclists - <AUTHOR> https://www.siliconrepublic.com/start-ups/luxonis-computer-vision-bike-cycling-safer-technology <comment><USER2> "So the final product is a multi-camera, rear-facing bike-light, which uses object detection and depth mapping to track the cars behind you - and know their x, y, and z position relative to you (and the x, y, and z of their edges, which is important).

What does it do with this information?

It's normally blinking/patterning like a normal bike light, and if it detects danger, it does one of two actions, and sometimes both:

1\. Starts flashing an ultra-bright strobe - to try to get the driver's attention

2\. Initiates haptic feedback - to let the person riding the bike that they're in danger

3\. Honks a car horn. This is if all else fails, and only happens if you are in certain danger"

Source: [https://discuss.luxonis.com/d/8-it-works-working- prototype-o...](https://discuss.luxonis.com/d/8-it-works-working-prototype-of- commute-guardian)

<comment><USER3> I see in Germany older folks often using a mirror on the left handlebar. Once I borrowed such bicycle, it was somehow weird, but I got used to that. Such device identifies cars and dangerous situation very well. Zero false positives, works pretty well in the night too. No batteries needed and costs between 5 and 15€.

<comment> Luxonis-Brandon Yes, mirrors are a fantastic solution. And for getting the attention of the distracted driver (as sometimes the dynamics of the bike preclude maneuvering out of the way in time), LOUD bicycle is a great solution: [https://www.kickstarter.com/projects/lansey/loud-bicycle- car...](https://www.kickstarter.com/projects/lansey/loud-bicycle-car-horns- for-cyclists)

</comment></comment></comment><comment><USER4> The real problem is that cyclists typically ride near the edge of the lane or road rather than in the center of the lane. This puts the cyclist outside of the foveal field of view for the motorist, which means that they're less likely to see them in time to avoid a collision.

<comment><USER5> Unfortunately, where I live bicycles keeping to the side of the lane is required by law. Even in situations where this isn't required, drivers can easily become aggressive towards slower vehicles such as bicycles.

Bicycles often fall through the cracks: not quite first class vehicles but not afforded the same protections as pedestrians.

<comment><USER4> > Unfortunately, where I live bicycles keeping to the side of the lane is > required by law.

In the US, most vehicle law is based on the UVC (uniform vehicle code) template. While that does contain a clause that cyclists must keep as far right as practicable, it lists a number of exceptions. One of those exceptions is a "substandard width lane"[1]. The law defines it as a lane that's too narrow for a bicycle and another vehicle to safely pass side by side within the lane.

Most general purpose lanes are 10 to 12 feet wide. A cyclist can range from 2 to 3 feet wide (depending on the type of bicycle) and require a minimum of 4 feet of operating space[2] with 5 feet preferred.

Even with the cyclist operating at far right as practicable and taking the minimum operating width into account, they take a little over 3 feet in roadway width. Given that most states have a 3 foot minimum distance passing law and the fact that most motor vehicles range from 7 to 8 feet in width (including their side mirrors) and commercial vehicles are around 10 feet wide, it's not possible to safely or legally pass a cyclist while remaining within a typical 10 to 12 foot wide lane.

[1] [https://law.lis.virginia.gov/vacode/title46.2/chapter8/secti...](https://law.lis.virginia.gov/vacode/title46.2/chapter8/section46.2-905/)

[2] [https://njdotlocalaidrc.com/perch/resources/aashto- gbf-4-201...](https://njdotlocalaidrc.com/perch/resources/aashto- gbf-4-2012-bicycle.pdf) (page 52)

</comment></comment></comment><comment><USER6> This seems like a good example of the problems with Silicon Valley brain, where we try to solve problems by hacking around them, rather than solving the actual problem, which is poor cycling facilities, easily solved by installing separated bike lanes.

<comment><USER7> But you can't expect every road to have a dedicated bike lane, right?

<comment><USER8> In Copenhagen or Amsterdam that's just the case. (Not literally _every_ road, they don't have bike lanes in residential areas, but almost every major road with significant traffic has a bike lane in these cities.)

<comment><USER9> Not just Amsterdam, the whole of the Netherlands is like that. But more than that, there is the _cultural_ aspect that cyclists and pedestrians are the number 1 priority on the road, then cars. None of these fancy hi-tech solutions work if the drivers don't care, and the laws don't protect cyclists.

</comment></comment></comment></comment><comment><USER10> Seems like an overall well-intentioned founder story. Wondering if there are Luxonis people out there who can address the below?

Would like to give the benefit of the doubt here to the CEO and Intel, but being weary of Intel's past "hacker friendly" blowharding and subsequent total abandonment of the hacker community with the Edison, I do wonder whether Intel is again playing the mafioso; the wording of this quote from the Luxonis CEO comes off, to me at least, as kissing the ring,

> "DepthAI, powered by Intel Movidius Myriad technology, is making it > tractable."

Also wonder about the nature of the open source software the article refers to,

> The Luxonis CEO said that the SoM works with a wealth of code that the > company has open-sourced through an MIT license.

Is the software running on the Myriad X itself open source, or just the SDK interfacing with it from the host machine? If the former, pretty amazing they were able to get Intel to agree to this, as I imagine the chip details are under strict NDA. If the latter, it seems pretty disingenuous to refer to the SOM software as "open source," at least not with a footnote that the most interesting part (the spatial depth calculation) is not, presuming that's done on the Myriad X.

<comment> Luxonis-Brandon Thanks for the kind words. Brandon the founder here. :-)

So although I could see how that quote could appear like that, the quote is not kissing the ring. We scoured the whole semiconductor start up scene to find a chip that could be used for this.

There are only 2 chips (as I'm aware, as of this writing) that can be used in such a way: 1\. Intel Movidius Myriad X 2\. Inuitive NU4000AI.

And the Inuitive, until super recently (i.e. 1.5 years after we have already built hardware off the Myriad X) was not ready to be used (had tape-out issues at the fab).

So this made the Myriad X the only chip that (1) had the capabilities needed and (2) was actually available and in production.

In terms of our open-source nature, the latter is what we've implemented - where we have closed source binaries running on the Myriad X - which then have a slew of open-source counterparts on the host. Sorry if this came off disingenuous. Do you have advice on how to phrase it in a better way?

[https://github.com/luxonis/depthai- hardware](https://github.com/luxonis/depthai-hardware) \- DepthAI hardware designs themselves. [https://github.com/luxonis/depthai](https://github.com/luxonis/depthai) \- Python Interface and Examples [https://github.com/luxonis/depthai- api](https://github.com/luxonis/depthai-api) \- C++ Core and C++ API [https://github.com/luxonis/depthai-ml- training](https://github.com/luxonis/depthai-ml-training) \- Online AI/ML training leveraging Google Colab (so it's free) [https://github.com/luxonis/depthai- experiments](https://github.com/luxonis/depthai-experiments) \- Experiments showing how to use DepthAI.

The above includes open source hardware, core capabilities in C++ which can be cross-compiled for various hosts, and open-source training notebooks and use- case examples.

So the goal of open-sourcing all that we can (including hardware) is to enable folks who have their own applications to leverage this, modify it, use it, etc. w/out having to even talk to us. We cannot open-source the code that runs on the Myriad X however, as then we wouldn't have a way to monetize, and would have to give up on the mission. (That, and we're also not allowed to.)

Thoughts?

Thanks, Brandon

</comment></comment><comment><USER11> So you're telling potentially distracted drivers that hey, it's OK to be distracted, the AI will take care of that for you? Like with Tesla's auto- pilot, it doesn't matter what the product manual says - too many drivers will interpret it to mean you can pay less attention and the computer will take up the slack for you.

<comment> Luxonis-Brandon Luxonis-Brandon here. So the distracted driver actually wouldn't be aware that the person riding the bike has this installed... unless the driver is paying super-close attention, in which case the device is not needed.

So unlink the Tesla example, where the driver knows his vehicle has this safety feature... the driver does not know the biker has this feature.

Thoughts?

<comment><USER11> Sorry I missed your reply.

My experience of cycling in the UK is many cyclists already go to great lengths to make themselves visible, and it makes no difference at all to close passing, etc. Hi-viz clothing, bright strobing lights - drivers act like you're not there.

It also makes drivers lazy - having nearly been knocked off my bike, the driver stopped and berated me for not wearing hi-viz, despite the bright lights I was using. Not impossible, therefore, that I also get berated for not using your device to warn me about drivers. There have been attempts to do this in the UK already with apps which notify drivers of cycists, with the app maker saying it would be the cyclists' fault if they were in an accident and weren't themselves using the app. (This was repudiated by the Advertising Standards Authority, but still.) This is similar to the all-too-frequent reporting about "A cyclist was crushed to death by a truck. Police said the victim was not wearing a helmet." Even the helmet manufacturers don't say it will stop a 20-ton vehicle from killing you :(

As Chris Boardman says about the helmet debate, it's the wrong emphasis. The issue is safety on our roads and drivers being careful around cyclists. Also, cyclists being predictable and riding safely. An electronic device will make little difference without that, and I feel it could make things worse.

Also, I find a mirror on the handlebars, a life-saver check when turning, and listening for engine noise to be pretty good at alerting me to drivers. Not sure electronics would improve this.

</comment></comment></comment><comment><USER12> I'm not sure I understand what the product is and what it does - it seems more like a technology looking for a market.

Is this a product that end users (car owners) could buy? How would it be integrated with the car? As a driver who doesn't care about cyclists (as those are the ones causing most accidents), would you buy a specific device just for avoiding cyclists?

Is it a product car manufacturers have to integrate in the car? Shouldn't this have a wider target than cyclists? How does it compare to the existing collision avoidance systems? If it's an optional safety system just for detecting cyclists, how do you sell it to the car buyer?

<comment><USER13> Yep, the article is very unclear about that. From the Luxonis site

[https://discuss.luxonis.com/d/8-it-works-working- prototype-o...](https://discuss.luxonis.com/d/8-it-works-working-prototype-of- commute-guardian)

> So the final product is a multi-camera, rear-facing bike-light, which uses > object detection and depth mapping to track the cars behind you

It's for the cyclist.

I'm both a car driver and a cyclist. I wonder if I want something like this on my bike and be unnecessarily scared by false positives (cars do get close to bicycles all the times and what can I do anyway?) or on my car just in case I don't notice a bicycle with no lights at night (plenty of them here.)

<comment><USER14> > I wonder if I want something like this on my bike and be unnecessarily > scared by false positives

Right?

Also a cyclist, I can totally imagine this going (uselessly) wild when I do something like lane-slip through peak-hour traffic in the city.

<comment><USER15> And also if the horn goes off, would that make agri drivers more so? I used to have an air horn on my bike - it sounded like a lorry horn, and the issue was that drivers heard it and would stop but would normally assume it wasn't from me, and would carry on.

<comment><USER14> That's a really good point, it would definitely escalate aggressive drivers.

I've had situations where I rode past someone (they were stopped in traffic), then they passed me again down the road (this repeated a couple of times) and every time I rolled past them, they'd descend further into apoplectic rage, I can't imagine flashing lights is going to help.

<comment><USER13> I can imagine: they think they paid their car 100 times more than our bicycles (actually maybe only 10), they know they could go 10 times as fast as a bicycle (maybe only 5) and yet they are stuck in the traffic, go as slow as us and won't be at home much earlier (or much later.)

When it happens to me to be a car driver I think that at least I'm enjoying heating or air conditioning but I'd like to be on my bicycle at least until I get out of the city.

</comment></comment></comment></comment></comment></comment><comment><USER16> Tech similar to this already exists. My rear bike light is also a radar that informs me of oncoming traffic. [https://buy.garmin.com/en- US/US/p/601468](https://buy.garmin.com/en-US/US/p/601468)

It works really well, but requires the cyclist to assess the risk and react. Something like this, that could inform both myself and the driver of an impending collision, would be (literally) a life saver.

<comment><USER17> This seems like a great future application of V2X.

[https://en.m.wikipedia.org/wiki/Vehicle-to- everything](https://en.m.wikipedia.org/wiki/Vehicle-to-everything)

<comment> Luxonis-Brandon Yes, totally agree on V2X. That's another hard infrastructure problem though… as it requires so many parties to adopt it (and implement it properly) for it to really help. We did talk to a bunch of V2X folks on this though to see how we could make an integration happen… but no traction so far.

</comment></comment></comment><comment><USER18> I couldn't find in the article, what exactly is the cycling product and who were their customers? Does it go in cars or on bikes?

<comment> Luxonis-Brandon So the idea is a smart rear bike light with situational awareness. More info on it is here: [https://discuss.luxonis.com/d/8-it-works-working- prototype-o...](https://discuss.luxonis.com/d/8-it-works-working-prototype-of- commute-guardian)

The hardware/firmware/software/AI necessary to make such a device wasn't available when we started this though, so we had to make it first. And we're releasing it with OpenCV. See here for details: [https://opencv.org/opencv- spatial-ai-competition/](https://opencv.org/opencv-spatial-ai-competition/)

So the bike-safety idea is not a product yet, but the underlying platform is now (and is going live on KickStarter soon).

Thoughts?

</comment></comment><comment><USER19> The solution to this problem is protected bike lanes. Anything else is a half measure.

<comment><USER20> The solution is to change the driving culture.

Protected bike lanes still need to cross regular streets (and that's where most accidents happen).

Technology won't solve people problem. Drivers need to expect bikers like they expect other cars and adjust speed to that expectation.

<comment><USER19> It's multi-step. Protected bike lanes will reduce traffic and in turn make it viable to make wholesale changes to urban transportation infra.

<comment> Luxonis-Brandon Agreed. And we view what we're developing as a stepping-stone to protected bike lanes.

</comment></comment></comment></comment><comment><USER21> Over-engineered solution to a problem better solved with segregated infrastructure which will be "backwards compatible" with older cars

<comment> Luxonis-Brandon We agree that segregated infrastructure is the ultimate solution. But we're technologists and are 0% effective at lobbying for infrastructure. Having had a bunch of friends hurt and killed by distracted drivers, it's us using the skills and capabilities we have to try to make a difference.

And the core of the development is the computer vision technology which allows a whole slew of other applications, including other safety solutions. The sheet numbers of problems solvable with this sort of application-specific human level perception is crazy.

So we are actually doing a competition now around it, here: [https://opencv.org/opencv-spatial-ai-competition/](https://opencv.org/opencv- spatial-ai-competition/)

We'll be releasing the winners of stage 1 soon (please feel free to apply!), which will quantify how crazy it is to be able to approach human-level perception (what an object is, and where) for specific myopic tasks (like picking strawberries, or detecting when a car is going to run you over).

Anyway, back to it, I agree personally the solution is infrastructure (which I've tried to write in every location that covers this... but maybe failed to do in that interview). But I view this as a stepping stone to infrastructure. If people are too scared to ride bikes because of the injury and death at the hands of distracted people driving cars, then there will be no push for infrastructure (as why build infrastructure for a thing no one does?).

So the goal is to allow people to ride bikes -safer- before the infrastructure is there... and thereby help drive the infrastructure change (through supply and demand relationship).

Thoughts?

Thanks, Brandon</comment></comment>


Use Tor? Your privacy may be compromised - <AUTHOR> https://freepn.com/posts/will_tor_protect_me.html?pk_campaign=ab1&pk_kwd=Hacker%20News <comment><USER2> And why exactly should we trust FreePN? I'm not qualified to do a security audit on the OSS code and unless you pay someone who's really good at cryptography, I think that statement applies to the rest of your users.

EDIT: I should also note that I like the idea that FreePN is a peer-to-peer network underneath. I think part of the problem with compromise that you've outlined in this article is that there is a pretty limited number of TOR nodes. With P2P, you scale out as you gain users, so the problem becomes getting the first x users.

<comment><AUTHOR> Hey smoyer! Ian from FreePN here -

> And why exactly should we trust FreePN? I'm not qualified to do a security > audit on the OSS code and unless you pay someone who's really good at > cryptography, I think that statement applies to the rest of your users.

That's a fair concern. We're a pretty small team at the moment, so haven't yet had a chance to get an independent security audit done (though we do intend to do so after we launch our alpha in around a month).

Our service is built on top of ZeroTier though (they haven't had a third-party audit, but the founder does write a lot about their security from time to time: [https://news.ycombinator.com/user?id=api](https://news.ycombinator.com/user?id=api)).

We decided to make all of our code for the network open-source as a show of good faith - we're trying to do everything with FreePN as transparently as possible (which I feel is important, being a security / privacy product), while still making it easy-to-use for less-techy people.

If you have any suggestions for how we can improve our messaging feel free to shoot me an email (in profile).

<comment><USER2> "FreePN is the only completely free, fast, secure, anonymous, unlimited- bandwith VPN. It's also open-source." is already a mouthful but I think what caught my eye when reading through the FAQ is that it's peer-to-peer. At that point, I think the integrity of the client is key (as noted above) and I think (as I'm imagining it) the idea that there's a coordinating server doesn't really scare me.

I also find it interesting that you don't accept fiat currencies as donations. Wouldn't these funds be useful when hiring a third-party auditor? Could a crowd-funding campaign be used to fund the auditor?

If you trust the coordinating server and that the client is both trustworthy and invulnerable, then I think it would be cool to have a ticker on your main web-site with two numbers ... the number of clients downloaded and the number of connections started through the coordinator in the last x period of time.

<comment><AUTHOR> > Wouldn't these funds be useful when hiring a third-party auditor? Could a > crowd-funding campaign be used to fund the auditor?

Actually that's a fair point & good idea I hadn't really considered. I'll update the contribution FAQ section with a link to PayPal soon!

> it would be cool to have a ticker on your main web-site with two numbers ... > the number of clients downloaded and the number of connections started > through the coordinator in the last x period of time

I love this also. Once we launch the alpha will 100% incorporate these into the landing page in some form!

<comment><USER2> Let me know when you can accept USD and I'll be your first (small) donor!

<comment><AUTHOR> Hi smoyer!

We took your advice and are starting to accept fiat currencies donations. Made a PayPal page - [https://www.paypal.me/freepn](https://www.paypal.me/freepn). Added the link to our website so that we can start collecting funds to pay for a security audit post-launch.

Thanks for your help and support! We really appreciate it!

<comment><USER2> The payment link you included on HN works ... the link from the FAQ gives a 404.

</comment></comment></comment></comment></comment></comment></comment><comment><USER3> Best practice for TOR:

\- Be aware that 3 letter agencies monitor TOR.

\- Use HTTPS for everything.

\- Dont goto personal stuff that could ID you.

A VPN service could also sniff the traffic and ID you. Work blocks freepn.com, so cant read the article.

<comment><AUTHOR> sarcasmatwork -

Ian from FreePN again. Does your work use OpenDNS or similar? We recently acquired the domain (freepn.com) via secondary market, so have been slowly working our way through some domain blocking issues (OpenDNS, Fortiguard, etc.)

For anyone this is an issue for, here's the main points of the article:

Why isn't Tor enough?

\- Compromised Exit Nodes

\- Compromised Guard Nodes

\- Traffic Shaping

\- Human Error / What you do while using Tor matters

\- Increased use of Tor means increased exposure</comment></comment>


Russian Peasant Multiplication - <AUTHOR> http://www.virtualspecies.com/2015/02/russian-peasant-multiplication.html <comment><USER3> I've been using a less strict version of this method to multiply in my head since I was a kid. Nice to know there's a name for it.

You can also take advantage of multiples of 5 and 10. For example:

       115 x 37 = (100 + 10 + 5) x 37
       = 3700 + 370 + 370/2
       = 3700 + 370 + 300/2 + 70/2
       = 3700 + 370 + 150 + 35
       = 4255

<comment><USER4> Somewhat surprisingly, this is how Common Core arithmetic is taught nowadays.

Some parents are making a fuss because 'that's not how they learned arithmetic' [1], but actually anyone who is good with mental math uses these sort of tricks, particularly taking advantage of commutativity and distributivity.

In fact this builds far stronger intuition for the properties of numbers and is a good way to prepare for algebra and proof-based approaches later on.

Same sort of mental shortcuts for two-digit squaring:

52² = (50 + 2)² = (5 ⋅ 10)² + 2 * (50 ⋅ 2) + 4² = 5² ⋅ 10² + 200 + 4 = 2500 + 200 + 4 = 2604

[1] [https://www.salon.com/2015/11/28/youre_wrong_about_common_co...](https://www.salon.com/2015/11/28/youre_wrong_about_common_core_math_sorry_parents_but_it_makes_more_sense_than_you_think/)

<comment><USER5> >Somewhat surprisingly

..to people who learn about Common Core from the rants of the parents who don't get it, quite sadly.

<comment><USER6> I don't like Common Core because it attempts to solve a problem that does not exist. The way we learned math was sufficient to enable us to build atomic bombs and go to the moon, all with slide rules for the most part. It has a proven history of working and working well.

The math shown in this article as well as much common core does not provide the user/student with understanding. Instead, they are taught incantations and rituals to get to an answer. This is a recipe for a society of math illiterates. Who is pushing this and why do they want such a society?

Common Core is not a better system than the one taught for a hundred years in this country. If you disagree, I would love to see the evidence. I'm sure before such a huge change was made to our educational system, there must be MOUNTAINS of such evidence that was presented. No? Not really?

<comment><USER7> > Instead, they are taught incantations and rituals to get to an answer.

My early school math involved memorising multiplication tables. Later on, there was rote memorisation of other aspects of math that I just never understood - you just "had to", and none of the teachers could explain _why_.

It was for this reason that I hated math, and it wasn't until I started understanding some of the more fundamental relationships many many years after school that I finally got it.

While this is but one anecdote, and having heard similar stories from others is just more anecdotes - there does seem to be research backing up that a lot of people don't understand the fundamental relationships between numbers and how math works.

I see Common Core math trying to teach relationships between numbers - <USER2> that by being able to break down large unwieldy numbers you can get something that while it might have a bunch more steps, they're at least feasable without counting on fingers/toes or trying to remember times tables.

<comment><USER4> For some reason, I immediately groked calculus and why it would be useful (maybe because I liked physics and the relationship between velocity and position is an intuitive one), but the point of linear algebra was a complete mystery to me.

Why are we multiplying these big matrices of numbers, and what is this complicated determinant thing? Why would anyone ever care what a kernel is, and what are these subspaces that keep getting referenced?

Now every other somewhat mathy problem I see can be broken down into linear algebra and I wish I had learned it better (and that it was taught with more intuition).

<comment><USER8> I completely suck at calculus, but have a great need for kernels. I am an intermediate programmer/musician and I use them for audio convolution[0].

[0] - [https://en.m.wikipedia.org/wiki/Convolution_reverb](https://en.m.wikipedia.org/wiki/Convolution_reverb)

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> Anyone interested in this should watch some "Flash Anzan" videos. Here are some of the more impressive ones I've seen: [1], [2], [3]

Here's one describing more of the basics: [4]

[1] - [https://www.youtube.com/watch?v=JawF0cv50Lk](https://www.youtube.com/watch?v=JawF0cv50Lk)

[2] - [https://www.youtube.com/watch?v=7ktpme4xcoQ](https://www.youtube.com/watch?v=7ktpme4xcoQ)

[3] - [https://www.youtube.com/watch?v=_vGMsVirYKs](https://www.youtube.com/watch?v=_vGMsVirYKs)

[4] - [https://www.youtube.com/watch?v=OFmDvAnIXo8](https://www.youtube.com/watch?v=OFmDvAnIXo8)

</comment><comment><USER10> I struggled and still do with multiplication taught in School. As a child my dad showed me "Napier's Bones". I haven't looked back since, it may be slower, more drawing, but for me it works

[https://en.wikipedia.org/wiki/Napier%27s_bones](https://en.wikipedia.org/wiki/Napier%27s_bones)

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

<comment><USER11> Your video link just shows the common lattice method for writing the standard multiplication algorithm, used since at least the 1200s by Arabs and common around the world ever since. Napier's bones is a physical artifact, which tries to eliminate the required memorization of a 1-digit multiplication table, and is very rarely used in practice by anyone anywhere. [https://en.wikipedia.org/wiki/Lattice_multiplication](https://en.wikipedia.org/wiki/Lattice_multiplication)

<comment><USER10> oh, I always thought it was called Napier's Bones, oh well.

</comment></comment></comment><comment><USER12> My takeaway (since I'm okay at multiplying numbers) is the algorithm for figuring out the binary digits of a number. I've always just done "okay, it's bigger than 256, so subtract that and then it's bigger than 64 so subtract, etc." I much prefer this strategy of successively divide by 2 and discard remainder, mark a 1 for each time that the result is odd and 0 for even.

<comment><USER5> That's, essentially, the algorithm for computing the representation of a number in a given base: divide by the base and write down the remainders.

To build up intuition on how this works, do it with base 10.

What are the digits of the number 8675309 ? Just remainders after repeatedly dividing by 10.

Now when it's almost obvious it works for base 10, you realize there's no reason it wouldn't work the same way for other bases. Hence the algorithm.

<comment><USER12> You're of course completely correct, but I feel like that misses the point. The great thing about this algorithm is not that it works - there are plenty of ways to figure out the binary representation of a number. Rather, it's that it only needs operations that are easy to perform and requires little state to remember. I'd much rather divide by two and round down than subtract the largest power of two that's less than my number from it. And I don't have to remember which power of N I last worked to know how many zeros I need to add before using the next power of 2 that fits in my number.

</comment></comment></comment><comment><USER13> Also known as "shift-and-add", and very commonly implemented in microcontrollers and early microprocessors that didn't have multiplication instructions in hardware.

</comment><comment><USER14> See also:

[http://www.solipsys.co.uk/new/RussianPeasantMultiplication.h...](http://www.solipsys.co.uk/new/RussianPeasantMultiplication.html)

</comment><comment><USER15> Wow! This website design is what everyone would have if the 90's dial-up BBS scene aesthetic had been the guiding light of website design from then on.

And I like it.

<comment><USER16> Especially that twisting Tag animation.. :)

</comment></comment><comment><USER17> Some of the Vedic Multiplication short cuts: [http://mathlearners.com/vedic- mathematics/multiplication-in-...](http://mathlearners.com/vedic- mathematics/multiplication-in-vedic-mathematics/)

</comment><comment><USER18> Another impressive system for mental arithmetic is the Trachtenberg System: [https://en.wikipedia.org/wiki/Trachtenberg_system](https://en.wikipedia.org/wiki/Trachtenberg_system)

</comment><comment><USER19> BTW There are many fast algorithms [https://en.m.wikipedia.org/wiki/Multiplication_algorithm](https://en.m.wikipedia.org/wiki/Multiplication_algorithm)

Fastest of them use FFT and parallelism

<comment><USER20> Fastest for sufficiently large numbers. In this case the crossover point is somewhere beyond 10,000 decimal digits.

</comment></comment><comment><USER21> This is a good introduction to how to create a binary multiplier unit in digital logic.

</comment><comment><USER22> I highly recommend the Secrets of Mental Math book:

[http://a.co/095nXaa](http://a.co/095nXaa)

Lots of good insights on how to make shortcut mental calculations.

</comment><comment><USER23> Could this be used to speed up multiplcation by computer? or is that already a "perfectly" optimized?

<comment><USER24> This is mostly equivalent to grade-school multiplication, but in binary. Good enough for multiplying small numbers; too slow for very big numbers.

<comment><USER25> Actually, this is basically how it is done in circuits, with some minor optimizations on top and without the explicit doubling operation.

It's about as simple as you can make a task like this. The grade school mechanism doesn't look so bad, when you consider that where multiplying by a digit 0-9 occasionally involves some carrying and non-trivial work but multiplying by a binary digit is a simple AND operation. The result is that with fixed operand size and no carrying, each digit you would write under the line using the grade school method can be determined directly as the AND of two bits of the input, and what's left is only a bunch of binary addition.

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

</comment></comment></comment><comment><USER26> I really love this kind of stuff, and it makes me wonder how the first person who did it figured it out.</comment>


Why are so few people on HN into defi & ETH? - <AUTHOR> I kind of struggle uderstanding this and really curious to hear why. I saw many projects being posted/ showcased here on HN which got an incredibly low traction despite being at the very edge of technology/finance/game theory.<p>TLDR HN doesn't care about crypto/Defi. Why? <comment><USER2> I can only speak for myself, but my opinion is that about one third of it is useless and the other two thirds are scams.

There is an incredible marketing campaign behind these things, I'll give them that, but at the end of the day I still believe that the whole field is essentially worthless.

The low uptake of these things among a crowd that understands 'tech' a lot more than the average user might be a sign of something.

</comment><comment><USER3> For what it's worth, my philosophy is that if you can't see or touch something (in other words, a 'tangible asset') it has no intrinsic value.

Thus, if its value can be instantly changed upwards or downwards, it is potentially worthless, and only relies on herd mentality for its value.

For Americans, a good example is Confederate Currency. When was the last time you could buy a Big Mac with a Confederate currency note? For Zimbabweans, what could you really buy with one of those $100 trillion banknotes ?

[https://cdn.cnn.com/cnnnext/dam/assets/160504154606-one- tril...](https://cdn.cnn.com/cnnnext/dam/assets/160504154606-one-trillion- dollar-exlarge-169.jpg)

</comment><comment><USER4> Most HNers realize we can do almost every blockchain application that comes along, without blockchain and better.

Blockchain lives in a bubble and has a technical hammer with very few nails. Also scams and malicious players

The good projects I've seen are HyperLedger and Handshake

<comment><USER4> Another good example is the post with price predictions. Please stop. It's a manipulated and unregulated market.</comment></comment>


Fake news of a fatal car crash wiped out $4B in ethereum's market value - <AUTHOR> https://qz.com/1014559/vitalik-buterin-dead-a-hoax-on-4chan-crashed-ethereums-price/ <comment><USER2> The posts on 4chan surfaced several hours after the initial devaluation began (which not only affected, and still affects, ethereum, but virtually every other cryptocurrency too [0][1]) and was consequently not the root cause - though the subsequent reports might have influenced some traders. It is however easy to argue that ethereum, still very much in its infancy, rely almost entirely on Vitalik's continued well-being and leadership.

[0]: [https://coinmarketcap.com/](https://coinmarketcap.com/) [1]: [https://bitcoinwisdom.com/](https://bitcoinwisdom.com/)

</comment><comment><USER3> Dam $4B loss. At least ethereums real value of 0 is still unchanged

</comment><comment><USER4> No it didn't. Crypto is down around the board, and as the last few dips in Bitcoin have shown, alts rise faster than BTC, and fall faster than BTC. This was no different.

</comment><comment><USER5> I'd argue that bitcoin is still kind of a gateway currency for crypto in many countries. If you want to buy/sell crypto, you have to go through bitcoin.

With the crypto market being highly volatile and ethereum having seen such a huge gain this year i don't see much unusual with it going down a "bit".</comment>


Google Open Source Load Balancer in Go - <AUTHOR> https://github.com/google/seesaw <comment><USER2> Official announcement: [http://google-opensource.blogspot.com/2016/01/seesaw- scalabl...](http://google-opensource.blogspot.com/2016/01/seesaw-scalable-and- robust-load.html).

Note that this is a network-level load balancer that is tightly coupled with LVS, not a Layer 7 load balancer like HAProxy.

<comment><USER3> HAproxy can do Layer 4.

<comment><USER2> It can, but not (I believe) without actually reading the packets, using sockets to connect to the destination, and sending them onwards.

Seesaw is just a traffic cop. The kernel does all the work.

<comment><USER3> I know HAproxy will aggressively use kernel features to reduce the amount of actual packet handling it does. For example, it does zero-copy forwarding using the splice system call. How this compares to what seesaw does is over my head, though. I just wanted to point out that HAproxy isn't strictly Layer 7.

</comment></comment></comment></comment><comment><USER4> Anycast VIPs and Direct Server Return were a couple key parts of VDN "secret sauce" in early to mid-2000s.

Cool to see this engine out in open source.

To build a VPN edge you also need cooperative tiered caches with some very counterintuitive cache admission and eviction algorithms, unicast front end with p2p (for vod) or multicast (for live) back end, multi-datacenter event aggregation and correlation, cookieless/db-less sessions, and a few other goodies, some of which you can now even find as Nginx plugins.

Assembling what you need is much easier now with HLS, DASH, etc., than it was in the MMS/RTSP/RTMP days.

As of last couple years, you could almost assemble a viable global VDN with off the shelf open source parts. If the open compute project keeps up its good work, the physical kit gets affordable too.

<comment><USER5> I've worked for CDNs and configured many VPNs but I have never heard of a VDN. What is a VDN? I don't recall hearing this term in the early 2000's either. Is that a Google internal name? Could you elaborate? Thanks.

<comment><USER6> Based on the rest of the commend, VDN = video distribution network. I think the 'VPN' is a typo and should be another 'VDN'

<comment><USER4> Sorry, yes, autocorrect ... VDN and video delivery network

</comment></comment></comment></comment><comment><USER7> LVS load-balancing is amazing. You can use a tiny instance to load balance huge amounts of traffic since the instance itself doesn't need to process and pass the traffic.

the part that makes it difficult to implement is that the hosts have to be on the same network. I didn't dive too much into the code but it looks like you also assign an additional interface to use as a VIP. I believe you'll need to be in your own network and not the cloud to implement this.

Still cool nonetheless!

<comment><USER8> Would it be possible to set this up with Digital Oceans Floating IP[1] and LVS? I know they use HA-Proxy[2,3] as a standard setup here.

[1]: [https://www.digitalocean.com/community/tutorials/how-to- use-...](https://www.digitalocean.com/community/tutorials/how-to-use-floating- ips-on-digitalocean)

[2]: [https://www.digitalocean.com/community/tutorials/how-to- crea...](https://www.digitalocean.com/community/tutorials/how-to-create-a- high-availability-haproxy-setup-with-corosync-pacemaker-and-floating-ips-on- ubuntu-14-04)

[3]: [https://www.digitalocean.com/community/tutorials/how-to- set-...](https://www.digitalocean.com/community/tutorials/how-to-set-up- highly-available-haproxy-servers-with-keepalived-and-floating-ips-on- ubuntu-14-04)

The reason I ask, I worked with one hosting provider who leveraged LVS for well over billions of impressions per month and was rock solid for all their client base.

I'm pretty interested in this, but not yet in a position to roll out a dedicated infrastructure.

<comment><USER9> The third link that you posted is for keepalived. keepalived uses LVS as the actual load balancer (which is what seesaw uses as well). So as long as you can setup seesaw to run a few scripts to inform DisitalOcean which droplet currently has the ip, then it should work fine. There is an example for keepalived in the link that you posted.

<comment><USER8> Awesome! Many thanks for the reply!

</comment></comment></comment></comment><comment><USER10> Wikimedia's LVS manager that does what seesaw does, although it was never "advertised" to the public:

[https://github.com/wikimedia/PyBal](https://github.com/wikimedia/PyBal)

It actually is a bit different in that it advertises VIPs via BGP, so no floating IPs are needed, but you need to be able to configure your upstream routers, and its configuration is much more flexible.

</comment><comment><USER5> Is this just some tooling around Quagga and LVS then? I mean if you had Quagga/BIRD and LVS on your load balancers(not an uncommon configuation) isn't that pretty much _all_ the heavy lifting? What else does Seesaw provide, SSL termination, config management?

</comment><comment><USER11> How does this compare to IPVS [http://www.linuxvirtualserver.org/software/ipvs.html](http://www.linuxvirtualserver.org/software/ipvs.html)?

<comment><USER9> seesaw is just a management layer on top of ipvs (or lvs).

</comment></comment><comment><USER12> Given that it's built on top of LVS, this presumably supports UDP load balancing. If so, that's great, as the available solutions for UDP load balancing are, to my knowledge, quite limited.

<comment><USER13> Yes, there's support for UDP, and for UDP-based protocols such as DNS.

[https://github.com/google/seesaw/blob/master/common/seesaw/s...](https://github.com/google/seesaw/blob/master/common/seesaw/seesaw.go)

</comment></comment><comment><USER14> OT: I'm a Go noob and I was wondering if there's something like requirements.txt for Go projects? Or is this usually the way to go?

        go get -u golang.org/x/crypto/ssh
        go get -u github.com/dlintw/goconf
        go get -u github.com/golang/glog
        go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
        go get -u github.com/miekg/dns

<comment><USER15> This looks incredibly brittle. What if one of those dependencies releases a new major version on its master branch that breaks compatibility? It was really surprising to see this done this way. I know go's package management is pretty weak but a serious project like needs reproducible builds. Since all the dependencies are on git they could just use git submodules in a vendor directory or something.

<comment><USER16> _This looks incredibly brittle. What if one of those dependencies releases a new major version on its master branch that breaks compatibility?_

You are not supposed to do this in Go. If you make changes that are API- incompatible, you need to create a new import path. From the Go FAQ:

 _Packages intended for public use should try to maintain backwards compatibility as they evolve. The Go 1 compatibility guidelines are a good reference here: don 't remove exported names, encourage tagged composite literals, and so on. If different functionality is required, add a new name instead of changing an old one. If a complete break is required, create a new package with a new import path._

[https://golang.org/doc/faq#get_version](https://golang.org/doc/faq#get_version)

Whether this is a good approach is the question, but pushing API compatibilities to an existing import path is considered to be bad.

(Since creating a new repository for each API-breaking version is annoying, there are sites such as [http://gopkg.in/](http://gopkg.in/) that allow you to expose version branches as a different import paths.)

</comment></comment></comment><comment><USER17> How does HN's duplicate link work? I'm asking this because I saw this thread earlier: [https://news.ycombinator.com/item?id=10998103](https://news.ycombinator.com/item?id=10998103)

Wouldn't it be fair for that submitter to get karma points?

<comment><USER18> They won't get the karma, but the equivalent cash value has been wired to their bank account.

</comment></comment><comment><USER19> This is not an official Google product. So why did it say Google in the title? This should be clarified.

<comment><USER20> It is a load balancer Google is using in production: [http://techcrunch.com/2016/01/29/google-open-sources-its- see...](http://techcrunch.com/2016/01/29/google-open-sources-its-seesaw-load- balancer/)

Edit: Here's the official Google announcement: [http://google- opensource.blogspot.com/2016/01/seesaw-scalabl...](http://google- opensource.blogspot.com/2016/01/seesaw-scalable-and-robust-load.html)

<comment><USER21> It's not used in production, it's used in "corp" which is totally disjoint from production at Google.

<comment><USER22> How is that not "using it in production"? Internal usage is still production usage.

<comment><USER3> When Google, Facebook, etc. refer to "production" they typically mean google.com, facebook.com, etc.

EDIT: If you're going to down-vote this comment, at least provide detaro with the correct answer to his/her question!

<comment><USER23> I didn't downvote, but your statement in no way refutes parent argument. Typically =/= always. It's similar to someone declaring "HN was down", and you reply by saying "HN is typically up"

<comment><USER3> It was more like someone saying, "Foo is not bar," someone else saying, "How is foo not bar? Bar is bar," and then me saying, "Because bar has a different meaning, colloquially, at certain companies."

</comment></comment></comment></comment></comment></comment></comment><comment><USER24> I don't want to digress too much from the main discussion, but what are the main reasons people use Go? What are the main use cases for Go? Just looking for a new programming language to learn for some of the next web apps I'll be building.

<comment><USER25> Excellent concurrency, blazingly fast and memory-safe.

The first is difficult for a lot of the commonly used languages, the second is hard for Python, Ruby, etc, the third is hard for C, C++, etc.

One downside (although some consider it an upside by design) is that it can be a bit more verbose than other languages since there is rarely any "magic". You can usually read any Go code and be pretty confident at what it does, because it doesn't allow you to hide complexity. This does tend to make the code more verbode.

I highly recommend taking the interactive Go Tour at [https://tour.golang.org/welcome/1](https://tour.golang.org/welcome/1) because it will show you everything you need to get a high-level overview of Go's power.

<comment><USER24> I would say the downside that you mentioned can also be a strength too!

Thanks for the response. I've been trying to decide between Go and Elixir as my next new language. Both languages sound like they have great features.

</comment></comment></comment><comment><USER26> AKA: We are not going to use this nor maintain it anymore.

</comment><comment><USER27> As much as I love Go and use it extensively for various production-grade projects, I'm wondering how suitable it really is for something like a load balancer.

My understanding is that Go's TLS performance is dramatically less than other C-based implementations like OpenSSL. I remember reading something about some licensing collisions between the Go project and some TLS stuff such that optimized encryption code couldn't be incorporated into the Go project directly. Cloudflare got around it and has much better performance for TLS.

Apart from that, GC is still a big deal and the current net/http standard library produces a lot of garbage.

<comment><USER28> I have not looked deeply at the implementation, at all, but given that the actual site refers to this as an "algorithm" for LVS, I kinda suspect all the heavy lifting is happening at the kernel level within LVS, and the go code is merely acting as a control program that tells the backend how to behave. Many high performance systems have lower performance scripting languages or similar built in or bolted on, in order to provide easier means of development without impeding performance significantly. LVS is no exception.

The LVS-based systems I've built and used in the past often had a number of non-C components (mostly Perl, as it was 10+ years ago), for health checks, data gathering, making balancing decisions, etc. It is entirely possible this is the kind of work Go is doing (again, I haven't looked deeply into the code...but, I don't immediately see anything indicating Go is doing the actual load balancing, but it is obviously doing health checks and providing management access).

Finally, Erlang is a garbage collected language, and yet it has been used for a couple of decades for this kind of workload. So, evidence strongly suggests it is possible for a GC language to do things like this (though, again, I don't think Go is doing the network layer work here, since LVS is in the picture).

<comment><USER29> That's because Erlang's GC is managed on a per-lightweight-process basis, which is possible because of the share-nothing nature of the concurrency model Erlang uses (actor/message-passing).

Garbage collection in Go can't be implemented the same way, because Go allows for shared mutable state.

That said, the work done to the GC in Go v1.5 seems quite phenomenal, but just because the two runtimes share a piece of terminology called "garbage collector", they're very, very different in terms of the semantics and effects exposed.

<comment><USER30> Apparently in 2016 we still need to make people aware that not all GCs are born the same way.</comment></comment></comment></comment>


Programmer/partner wanted - <AUTHOR>

Hi,
My name is Bill Turner. I teach at the Expressions College For Digital Arts in Emeryville Ca.
 I'm currently looking for a programmer/co partner for a Wikipedia-style project that will be a data base of information pertaining to a particular nitch industry. This project will also have user uploaded videos and forums. This will be a commercial venture.
If you're a programmer that lives in the bay area X preferably the East bay and are interested in hearing more send me an email
At:    email@example.com
Thanks Bill <comment><AUTHOR> No, I am not a pirate of the caribbean. However, as soon as I get wealthy I intend on buying a very large boat.

"yargh"

</comment><comment><USER2> Yargh, but are you out of Davy Jones' Locker yet?

</comment><comment><USER3> When evaluating prospective partners, the business plan the partner wants to pursue is not essential information. In fact PG ISTR recommends settling on partners before settling on a business plan. You do not want to post a list of skills you claim to have or a list of places you were enrolled or employed or something that might provide evidence that you really have those skills?

<comment><USER4> He says he teaches at an art school, so presumably he is a quite competent web designer.

<comment><USER5> ph34r!

</comment></comment></comment><comment><USER6> I only develop websites for niches, sorry.

<comment><USER7> I'm normally not one for spell checking other people, but I'm upvoting this.</comment></comment>


Ask HN: What is your go-to random data generator? - <AUTHOR>

I'm having trouble finding a decent one.<p>>inb4 google (i have looked) <comment><USER2> Any one of the ports of Perl's Data::Faker work great (there are great libraries for Ruby, Python, C#, PHP, …).</comment>


A Pix2Pix demo that mimics the facial expression of the German chancellor - <AUTHOR> https://medium.com/towards-data-science/face2face-a-pix2pix-demo-that-mimics-the-facial-expression-of-the-german-chancellor-b6771d65bf66 <comment><AUTHOR> My first dive into Deep Learning + Art using pix2pix to generate images of the German chancellor from my facial landmarks in real-time. The code is on Github: [https://github.com/datitran/face2face- demo](https://github.com/datitran/face2face-demo). Hope you like it!</comment>