Disclosing Your Finances: Should you publicly publish your finances? - <AUTHOR> http://spencerfry.com/disclosing-your-finances

<comment><USER3> A few observations based on having dealt with countless startups over the years from a legal perspective and otherwise:

1\. Officers and directors owe a fiduciary duty to their companies to perform their duties in the best interests of the company and its shareholders. Divulging company confidential information such as finances easily could be construed as a breach of such duties. Thus, in any company having shareholders besides the founders, public disclosure is a step to be taken only with caution. Whatever is happy and upbeat today might be otherwise tomorrow and shareholders may be only too keen to second-guess management if they think some disclosure ultimately left the company vulnerable (e.g., by helping a competitor).

2\. You can't ultimately raise money for your company without making disclosure of financial information to prospective investors and a company would, in my view, have potential liability risks from legacy public disclosures that might have been made before the funding itself. What if such disclosures were inaccurate, as they would be if tainted by puffing or by any other depiction of the company's situation that appeared to be accurate on the surface but was in fact misleading. In such a case, what is to prevent an investor from claiming to have relied in a material way on such information to his detriment?

There may be other legal risks as well. There certainly are business risks: giving competitors useful information on where to target their resources based on your numbers; giving adversaries in a lawsuit added leverage in their settlement negotiations with your company; giving potential vultures ammunition for when to close in for the kill in an acquisition (e.g., you disclose "happy numbers" in a couple of good years and then go silent when you get overextended as a company and become vulnerable).

In general, one of the great advantages of being a closely-held company is the privilege of keeping the financial information within a very tight-knit group inside the company. To give that up gratuitously will in most cases be a big mistake. Of course, it may make sense for some founder groups to opt for such disclosure for some of the reasons cited in the post and in this thread. But this should be the rare exception and not the rule.

</comment><comment><USER4> He asks, "who are the people who care about this information?" - but forgot that CUSTOMERS often care, too!

I never considered publishing financials until the dot-com-crash when so many companies were going under, we started getting daily emails from our customers asking, "Are you guys going to be around? Everything OK?"

Then I started publishing the info once or twice a year to show that everything was healthy and fine:

<http://cdbaby.org/stories/02/06/04/5349389.html>

<http://cdbaby.org/stories/03/03/11/2873136.html>

<http://cdbaby.org/stories/03/08/12/6186390.html>

Many customers told me that's why they chose to do business with us. Because we were so wide-open with our numbers.

<comment><USER5> I completely disagree. There are better means of letting your customers know that everything is going well.

Adam said it best on a comment on my post: "The biggest issue, I think, is #3, and I'd put it a bit more strongly: most people are financially illiterate. They don't have a strong sense of the difference between gross revenue, net revenue, profit, etc. They can't read a balance sheet or a cash flow statement. This is fine, generally speaking. Although everyone might be better off with such knowledge, most of us don't really require it to get through our day."

"In the end, what probably matters most is whether customers believe that your company is building its success on their backs, or whether they're your partners in growth. And really it's hard to see how disclosing financial helps with that perception, and easy to see how it might hurt."

Source: <http://spencerfry.com/disclosing-your-finances#c-2171928>

<comment><USER6> What could be a more effective means of communicating the health of the company to your customer base?

<comment><USER5> Off the top of my head...

1\. Talk/show your user growth.

2\. Blog about how you're all working full-time.

3\. Hiring people. Usually (at least in self-funded companies) the more people you've got the healthier you are.

4\. Talk about your server infrastructure and about how you just upgraded your servers / added more servers to keep up with the "amazing growth".

5\. Be active on your blog. Talk up about your plans for the next year. If you've got plans for the next year... you're probably not going anywhere.

6\. Keep producing updates to your product. Nothing shows the health of your company like continuing to release updates.

<comment><USER6> Hm. I suppose it depends on who your users are. None of those things would convince me of your stability. My thought is that usually, the faster a business expands, the greater chance it has of overstepping itself and failing. For example, until now, my costs have been such that if I fuck up and loose revenue, I can pay for operating costs by getting a full time contracting gig. (I've been expanding, and I'm rapidly approaching the point where this is no longer the case. But there have been many times during the last five years when I have fucked it up and I have needed to rent myself out to pay for it.)

In other words, going full time prematurely almost killed my business, several times. I mean, I'm full-time now, but as far as stability of the business goes, me being full time adds quite a lot of risk. (It adds upside, too; I can get a lot more done, but it means that I have less room to pay for mistakes.)

Thinking more about this, I think part of the disconnect between what you say and what I think is that I am running a business that is in large part reselling services I rent from others. (well, I rent power and data center space, and then I buy servers, install software, and rent out a portion of the CPU/RAM/etc... but by far my biggest cost is power and data center space. I almost spend that much on hardware every month too, but that is only because I am growing. over the 3 year lifespan of a server, the power it consumes will exceed it's original purchase price, at least when it comes to what I pay for hardware and what I pay for power. )

The difference is in likely failure modes. If you have a webapp you can run on a single server (an 8 core/32GiB ram server is gonna cost north of $2K to buy, but you can host it for under $150/month, and 32GiB ram/8 cores can handle rather a lot of users.) you really only go out of business when you get tired of it. most people can support the $150/month server indefinitely, even if there is not any money coming in. On the other hand, uh, my hosting costs are large enough that if there was no money coming in, well, I'd need to get a contracting gig fast. As long as the webapp guy is making plans for next year, there probably will be a next year. On the other hand, the guy with the high overhead is likely going to relax when things are going well, and is likely to plan hardest when he can see failure.

</comment></comment></comment></comment></comment><comment><USER7> _I can assure you that openly talking about your revenue if it's not mind- blowing is going to turn off investors. If you show that your company did $100,000 a year in revenue last year and increased to $150,000 this year, then fewer investors are going to be interested in chatting with you_

At some point, these numbers are going to come to light with potential investors. If your numbers aren't great, not disclosing them might earn you audience with more investors, but ultimately you'd be wasting time that would be better spent improving your offering.

Perhaps it's better to let them disqualify themselves.

<comment><USER8> People (including investors) aren't purely rational. After I already like you, think good things about you, etc. it's easier for me to explain away or disregard negative things.

I'm sure you've heard about the 'halo effect' or 'post purchase rationalization' (in this case the purchase price being time/effort, not money).

<comment><USER6> yeah, but an 'unqualified' investor wastes my time as well as his. I've been approached by several entities looking to buy out prgmr.com, and we wasted a bunch of time dancing 'cause we weren't clear at the outset about what we wanted/had.

I guess it wasn't entirely a waste of time; I was able to pass one of them off on one of my sort-of competitors. (hey, goodwill for me, and another competitor I don't have to worry about)

</comment></comment></comment><comment><USER9> If you run an incorporated company, at least in the UK, you have to submit annual accounts which will contain manny of these figures anyway. Although they won't go into as much detail, anyone can get access to the accounts if they want.

You can bet that investors will do this, as will interested competitors and even larger companies you do business with may well dig them up.

Posting figures on a blog is more public, you're drawing attention to them, but given that the data is available anyway, it might be better to reveal them on your blog.

(Of course, accounts don't get filed until after the first year...but then you would only be publishing the last financial year's stats.)

<comment><USER8> In the States you don't have to submit much unless you're public/really-big.

I'd be very surprised if the UK had reporting requirements that stringent for every corporation ... Do you have a source on that claim?

<comment><USER9> Indeed, the reporting requirements differ depending on the size of the company. But even a small company has to file:

a profit and loss account and a full balance sheet

These are submitted every year to Companies House. See <http://www.companieshouse.gov.uk/about/gbhtml/gp2.shtml> chapters 6 & 7.

</comment></comment></comment><comment><USER10> > I can assure you that openly talking about your revenue if it's not mind- > blowing is going to turn off investors. If you show that your company did > $100,000 a year in revenue last year and increased to $150,000 this year, > then fewer investors are going to be interested in chatting with you.

I don't get that. Does he mean that those investors will not find out in due course what your turnover is? Surely that would be a part of any - <USER2> preliminary - talks.

And if it is because VCs wouldn't want to be associated with such small companies then it might hold some water, but not a whole lot in my experience.

What is more important is that if you are successful in some niche that you don't want to be too lippy about it simply because you are waking up a bunch of would-be competitors. That's mentioned too, and I think that is one of the only really valid reasons for holding your cards close to your chest.

But even then, looking at a company from the outside in and having some stats to work with you can usually get within the ballpark of what a company is making.

Also, in many countries you do a public filing of what you are making anyway, usually with the local equivalent of the chambers of commerce. Anybody so inclined would be able to find out in a heartbeat.

The ground rule to me seems to be don't blab but act as if everybody will know it anyway.

</comment><comment><USER11> One point I would like to add / disagree with:

"Suffice it to say that I don't think that the press you're going to receive outside the entrepreneurial community is enough to justify exposing your finances to the public."

I believe the opposite, most people (outside of tech) do not know much about products in tech, so they often come to people in tech for recommendations on everything from cell phones, to computers, to websites for fun / etc.

The same way you might ask a girl what flowers would be nice to get for your mom.

Recommendations exist in the real world & I personally think that putting yourself in front of a group of influencers (like the people here on HN) is a great way to gain word of mouth marketing.

</comment><comment><USER12> Hey, after this we only need to publicly publish the frequency and variety of our sexual intercourse and we will have finally opened up every last previously taboo subject.

<comment><USER6> so you are saying that we should keep our revenue numbers secret not out of selfishness but because it's impolite to discuss money?

But then, I guess I'm just crass... I never understood why workers tend to keep their salaries secret from their peers; it seems to contribute to asymmetrical information distributions, in the employer's favor.</comment></comment>


Ask HN: Suggestions for a 2 week holiday - <AUTHOR>

Hello all , I got 2 week holiday , I wanna do something thats productive over these 2 weeks. I'd like to do a project that will help me in programming skills. I prefer doing a proj rather than reading a book  cuz you'll learn alot over a project than from a book . So suggest me something to work on.. <comment><USER2> <http://redline.st>

</comment><comment><USER3> Why don't you write code? And make something viral!</comment>


Html - <AUTHOR> I am a beginner in using programming languages. I will love to learn about. Thank you <comment><USER2> [https://developer.mozilla.org/en- US/Learn/HTML/Introduction_...](https://developer.mozilla.org/en- US/Learn/HTML/Introduction_to_HTML) is a good starting place...

</comment><comment><USER3> Hacker News is not the best place to learn HTML. Here is a better place to start:

[https://developer.mozilla.org/en- US/Learn/HTML](https://developer.mozilla.org/en-US/Learn/HTML)

There may also be message boards that are about learning HTML and other web standards, and those would be more appropriate places to post your questions.

</comment><comment><USER4> yeah, probably not the best place for that question. a good start aside from mozilla could be: [http://www.w3schools.com/](http://www.w3schools.com/) happy learning.</comment>


Show HN: Resume builder – beautiful, highly customizable templates - <AUTHOR> https://opusone.ai/resume-builder <comment><USER2> Tech recruiter here.

Love the templates, they are very readable.

Yet, the biggest problem with such builders is that people hate data-entry.

<comment><AUTHOR> Thank you!

I know, I wanted to add a LinkedIn integration but they don't allow it unless you're a partner.

So, I tried to mitigate the "data-entry hate" by showing the resume being updated in real time.

<comment><USER2> killer feature suggestion: You can ask people to download a pdf from their Linkedin profile and parse that (it is doable because it is standardized and a lot of startups depend on it, so unlikely that Linkedin will change it)

<comment><AUTHOR> Oh that's a great idea. I already found a php parser for it. Thanks for the suggestion.

</comment></comment></comment></comment><comment><USER3> What did you use to generate the resumes?

<comment><AUTHOR> I've used react-pdf[1] to generate the resumes and react-pdf[2] to display them

[1] [https://react-pdf.org/](https://react-pdf.org/) [2] [https://github.com/wojtekmaj/react-pdf](https://github.com/wojtekmaj/react- pdf)

<comment><USER3> Thanks for the reply. The resumes look great.</comment></comment></comment>


How technology gets news out of North Korea - <AUTHOR> http://www.itworld.com/personal-tech/125972/how-digital-technology-gets-news-out-north-korea

<comment><USER2> can anyone provide a link to the cited video? would be interesting to see.</comment>


Ask HN: How to make bootstrap look more professional - <AUTHOR> I'm developing an application for use by the internal users of a public sector organization. There aren't any requirements for fancy UI so I'm just using good old bootstrap 4. However, I think that the defaults don't look as much professional, or if you want "enterpris-y". Could you recommend me a better approach? Ideally I'd like to just keep my bootstrap layout and change some fonts / colors / sizes etc by an extra css style that would override the bootstrap 4 defaults.<p>Thank you! <comment><USER2> I apologise beforehand if this comes off as spammy, but I recently built a framework which is sort of like an alternative to Bootstrap: [https://www.gethalfmoon.com/](https://www.gethalfmoon.com/)

Not sure if the design here is more enterprisy, but it might suit your needs.

<comment><USER3> I have looked at your framework very recently. And it looks super awesome and with very thorough documentation.

</comment></comment><comment><USER4> I've always thought Redhat's pattern fly does the best job of this corporate look. [https://www.patternfly.org/v4/](https://www.patternfly.org/v4/)

<comment><USER5> Just discovered this from your comment. I'm always looking for stuff like this to reference when designing. Thanks a ton!

</comment></comment><comment><USER6> I used to have this problem but then I recently bought Tailwind UI. It's $250 but I thought it was totally worth it, it makes it so easy to make stuff professionals if you're a freelancer or working on multiple projects from scratch, the $250 ends up being worth it over time. I'm not associated to tailwind UI, I'm just recommending it because I really think it's great and was surprised how easy design became after I got it

<comment><USER7> I've been using Tailwind more than Bootstrap recently.

Bootstrap is just everywhere and has been for a long time.

It's refreshing to see something new using tailwind.

It takes a little time to get up to speed, but once you do going back to work with bootstrap makes you appreciate how easy tailwind is.

TailwindUI.com is awesome, they have some free components you can use to see if you like it, or you can use tailwind components from other sources.

TailwindUI components are just more polished/pro from the start.

</comment></comment><comment><USER8> Clarity, from VMWare, is pretty "professional" looking [https://clarity.design/documentation/get- started](https://clarity.design/documentation/get-started)

</comment><comment><USER9> There are many free themes, try searching for "bootstrap enterprise theme"

<comment><USER10> This made me laugh quite a bit. Nor sure why, probably the fact that the solution is an enterprised theme - I can't even imagine what that looks like.

Besides, I imagine OP should customise the default or a new theme to suite their needs.

<comment><AUTHOR> Well as enterprise theme would have some of these characteristics:

* Rather small letters * Boring like colours * Nice layout of components in a grid * Probably a serif font

Think of something like Windows 95 :)</comment></comment></comment>


The Modern IPO Is Useless. Let's Reinvent It - <AUTHOR> https://www.wsj.com/articles/the-modern-ipo-is-useless-lets-reinvent-it-1506361770 <comment><USER2> I'd be curious to hear a rebuttal to this article I read the other week criticizing Social Capital / SPACs by someone more knowledgeable about this field than me: [https://www.bloomberg.com/view/articles/2017-09-15/icos- vcs-...](https://www.bloomberg.com/view/articles/2017-09-15/icos-vcs-ipos-and- spacs)

<comment><USER3> Matt Levine has been great at puncturing the overblown hyperbole about SPACs and generally pointing out how silly Social Capital is.

The entire saga:

[https://www.bloomberg.com/view/articles/2017-08-24/unicorn-s...](https://www.bloomberg.com/view/articles/2017-08-24/unicorn- spacs-and-cargo-quants)

[https://www.bloomberg.com/view/articles/2017-09-15/icos- vcs-...](https://www.bloomberg.com/view/articles/2017-09-15/icos-vcs-ipos-and- spacs)

[https://www.bloomberg.com/view/articles/2017-09-19/memory- mo...](https://www.bloomberg.com/view/articles/2017-09-19/memory-mortgages- and-puzzles)

edit: also, [https://ftalphaville.ft.com/2017/09/19/2193913/the-public- ma...](https://ftalphaville.ft.com/2017/09/19/2193913/the-public-markets- arent-nearly-broken-enough/)

</comment></comment><comment><USER4> It's being reinvented. It's called an initial coin offering. And now I shall drown in downvotes.

I'll redeem my self with a non paywall explanation of Social Capital's S-1 filing: [https://www.recode.net/2017/8/23/16194374/social-capital- inv...](https://www.recode.net/2017/8/23/16194374/social-capital-investment- firm-banks-ipo-public)

<comment><USER5> I think it is something more in between. Currently ICOs don't protect investors in any way. One financial sandbox alternative is to enable capped ICOs to offer securities for real startups. I am tired of utility tokens without too much utility and great speculation.

<comment><USER6> > I think it is something more in between.

Yes. One which addresses the unique aspects of the technology, adds consumer and investor protections, and acknowledges the liquidity benefits of an inevitable secondary market which no gatekeeper can prevent.

> One financial sandbox alternative is to enable capped ICOs to offer > securities for real startups.

And not this.

<comment><USER5> > And not this.

Why not?

<comment><USER6> securities for real startups most likely means equities in real startups, which comes with the illiquidity burden that people just don't want.

a totally roundabout way of using tokenized assets at all

<comment><USER7> Not if they are tradable and (semi) liquid? Isn't that the whole point, to raise capital through an ICO + eventually make said tokens (representing equity) tradable from the start, so you have liquidity?

<comment><USER4> Yeah, I don't understand why he's contradicting himself.

<comment><USER6> Do you two understand securities laws?

So properly registered startup securities cannot be traded on properly registered securities exchanges.

If they are not properly registered and only sold to accredited investors, then they can only trade OTC to accredited investors.

The costs of registering to trade on properly registered securities exchanges are too high for startups.

The ongoing costs of transparency for publicly traded securities are too high for startups.

Registered broker-dealers that are able to trade properly registered tokenized assets do not currently exist, even if a tokenized offering were to properly register as a publicly tradable security.

Currently, people are avoiding all of this and get tradable assets with near- zero compliance costs. The rebuttal isn't "just register", it is "just register at a very high cost and lose all the benefits you already enjoyed at a lower cost and lose every possible service provider for the foreseeable future"

<comment><USER4> Yes, I understand securities law. There will be proper avenues to trade tokenized securities within the next 12 to 24 months. There is atleast one high profile crypto exchange in the U.S. working on this that I've learned from an inside source. Your argument is essentially that the infrastructure hasn't caught up yet. It would be naive to think that it won't, especially if tokenized securities are going to be a massive market.

<comment><USER6> Right, that is a possibility. Overstock is also working on it.

But even going that perspective is going to coincide with scalability and UI improvements which make decentralized exchanges better.

These structures will have no entity to register as a broker-dealer and are incapable of distinguishing between any smart-contract's legal status

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> it's called ICO now</comment>


Linux Needs Open Multimedia on the Web - <AUTHOR> http://www.linux-mag.com/id/7483 <comment> loup-vaillant > Overall, the situation isn't great. Flash works well under 32bit Linux but > only when using closed source, bug ridden proprietary software.

There is a funny little contradiction: If Flash works well, how can you accuse the software to be "bug ridden"? (Disclaimer: I don't like Flash, for political reasons).

</comment><comment><USER2> Anyone got any more info on the conspiracy theory in the comments by "jdas"? I've heard others saying that On2 was picked up by Google at a price that cheated the shareholders.

<comment><USER3> [http://www.reuters.com/article/rbssTechMediaTelecomNews/idUS...](http://www.reuters.com/article/rbssTechMediaTelecomNews/idUSN1213117420090812)

This looks like the acquisition equivalent of the exploding term sheet.</comment></comment>


The problem with investing based on pattern recognition - <AUTHOR> http://cdixon.org/2012/03/07/the-problem-with-investing-based-on-pattern-recognition/ <comment><USER2> I think there's a huge opportunity right now as an investor in Silicon Valley to be a pattern contrarian. You'd have the field all to yourself.</comment>


Do Geography and Altitude Shape the Sounds of a Language? - <AUTHOR> http://www.smithsonianmag.com/science-nature/do-geography-and-altitude-shape-the-sounds-of-a-language-104321/?no-ist <comment><USER2> One example agreeing with this idea is:

In Swedish north, word for "yes" is pretty much shaped by what would be easiest sound to produce when one's lips are frozen:

[http://www.youtube.com/watch?v=URgdIAz4QNg](http://www.youtube.com/watch?v=URgdIAz4QNg)

</comment><comment><USER3> Is then a language simply a combination of sounds which are the easiest to produce depending on the climate, altitude, terrain where we live?</comment>


.NET JIT and SIMD are getting married - <AUTHOR> http://blogs.msdn.com/b/dotnet/archive/2014/04/07/the-jit-finally-proposed-jit-and-simd-are-getting-married.aspx <comment><USER2> This is great to see. While Mono already had a method for using SIMD intrinsics, this tweet[1] indicates that this approach is better. Can anyone elaborate?

[1] [https://twitter.com/migueldeicaza/status/452099923157065728](https://twitter.com/migueldeicaza/status/452099923157065728)

<comment><USER3> Our implementation is too tightly coupled to the Intel SIMD approach, while this approach works for SIMD implementation on other CPU architectures.

Mono.SIMD has a few extra features that are missing from the current design, but they are not that important.

Microsoft has found a pleasant and easier to use API than we did. We have shared our feedback with them, and hopefully it will keep improving.

<comment><USER4> We shared our design with Miguel for feedback ahead of the release. He gave us a boatload of very high quality and informed feedback. Thanks! We haven't been able to act on most of it yet, since it relates more to what to do next than what we released just now.

We're hoping to see this NuGet package supported on top of Mono, too. As we've done previously, we'll share our tests with Xamarin to ensure consistent behavior between implementations.

</comment></comment></comment><comment><USER5> The article starts with a falsehood. Moore's law is not finished. Much like Mark Twain's death, reports of its demise are greatly exaggerated. Transistor count is still surprisingly following Moore's curve, and single threaded performance, while having taken a hit, is still growing at a healthy 25% per year.

Oh well opening lines are what opening lines need to be. I'm just pedantic about stepping on solid ground.

<comment><USER6> It was also careful to frame it in terms of clock speed. I remember fondly the ramp up from 4.77 MHz to our current clock rates, and we have really plateaued around 3.4 GHz at the top end. [1] There have been challenges to reach higher speeds, and I think the highest clock rate is an impressive 8+ GHz, but that isn't off-the-shelf stock you just pick up at Newegg. That blog post has some interesting and relevant data. It is a few years old now, but still applies.

[1] [http://csgillespie.wordpress.com/2011/01/25/cpu-and-gpu- tren...](http://csgillespie.wordpress.com/2011/01/25/cpu-and-gpu-trends-over- time/)

<comment><USER7> To my knowledge the fastest (in ghz) commercial processor is an Power 7 at 5.5 ghz.

I wonder how it compares to a x86, but benchmarks are hard to come by.

</comment></comment></comment><comment><USER8> Lots of interesting news in the .NET world lately. (Kind of hard to believe it took this long to get SIMD though!)

SIMD can be a huge boost for numerical workloads; for example, SIMD auto- vectorization was just added to Julia, and people saw 8x boosts on some workloads (and in some cases another 4x from inlining improvements merged the next day).

<comment><USER9> > Kind of hard to believe it took this long to get SIMD though!

Does the JVM have SIMD?

<comment><USER10> If what's needed is speed, neither Java nor C# are optimal choices. As for SSE/AVX from Java, [http://stackoverflow.com/a/10809123/158026](http://stackoverflow.com/a/10809123/158026) shows a nice example of how it can be done.

OTOH, I find this specific C# implementation neat and portable. I like it a lot.

<comment><USER11> _If what 's needed is speed, neither Java nor C# are optimal choices._

True, but if you're just trying to get some numerical speed out of some specific routines in a larger .NET application then having access to SSE like this could still be very helpful. Calling into native libraries from .NET isn't necessarily a performant option because of the cost of marshaling data back and forth between the managed and unmanaged memory spaces.

The end result can be pretty significant; from my own experience I'm usually pretty hard-pressed to come up with a C++ implementation that can beat the C# code it intends to replace outside of a microbenchmark. If the C# code now has the option of banging on SSE then I'm not sure it'll even be worth trying to trot out C++.

<comment><USER12> You can get rid of a fair amount of marshaling overhead if you use unsafe code (if that's acceptable in your org).

<comment><USER11> You can, and I've generally had better luck with unsafe code than with C++ code. Unsafe code creates GC overhead, though, so it can also end up doing more harm than good if you're not careful. It's another spot where I've found that microbenchmarks can be misleading - the performance cost that pinning incurs is insidious and hard to measure.

<comment><USER13> That sounds interesting, could you elaborate? (what is pinning in this context?)

<comment><USER14> Usually in the managed world you have references that point to an object. The objects themselves don't live in the same place forever, they may be moved by the GC (to consolidate "holes" in memory). References reflect that movement so you don't notice. However, when using unsafe code (which has pointers and pointer arithmetic) you need to keep the objects in place. That's pinning and it essentially forces the GC to work around those islands of pinned objects.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER15> Although this technology preview only works on 64-bit Windows 8.1, Microsoft's Kevin Frei promised that this will be released for "all platforms that .NET supports" in the future: [http://blogs.msdn.com/b/dotnet/archive/2013/09/30/ryujit- the...](http://blogs.msdn.com/b/dotnet/archive/2013/09/30/ryujit-the-next- generation-jit-compiler.aspx?PageIndex=2#comments)

</comment><comment><USER11> As someone who was recently contemplating pushing some functionality out into C++ code purely for the sake of SIMD, I can only describe this development as pants-wettingly exciting.

</comment><comment><USER16> If JS and Node will eat enterprise I might as well move into .NET game programming :).

<comment><USER17> That will _never_ happen.

Then again the NHS here in the UK just rewrote a ton of stuff in RabbitMQ, Riak and Erlang from Oracle...

<comment><USER18> Sorry to break it to you, but .NET has been devouring game programming for years. Unity uses it extensively, XNA was until recently a big choice for indie development, MonoGame is growing, etc...

<comment><USER19> I still don't understand why XNA was discontinued. Is there a suitable replacement for creating games rather easily in C#?

<comment><USER16> MonoGame is meant to be an OSS XNA replacement. It's very good for indies with good programming skills. Fez and Bastion were implemented using XNA/MonoGame. If one is more of a game-designer/scripter or is business-oriented then Unity3d is also a good choice.

</comment></comment></comment></comment></comment><comment><USER20> I was curious about SIMD support in JavaScript and it looks Firefox nightly already has an API for it and Chrome too is getting it.

[http://www.2ality.com/2013/12/simd- js.html](http://www.2ality.com/2013/12/simd-js.html)

[https://01.org/blogs/tlcounts/2014/bringing-simd- javascript](https://01.org/blogs/tlcounts/2014/bringing-simd-javascript)

</comment><comment><USER21>
      For performance reasons, we've defined those types as immutable value types.

Immutability strikes again.

<comment><USER22> How would immutability help with performance? (I'm not trying to ask a leading question, just curious) Value types are obviously nice for better cache performance (less pointer chasing, more linear data) but I generally associate immutability with better correctness but worse performance (not much worse, but worse).

edit: On topic, this is really, really cool. I was playing around with SIMD intrinsics in C++ a few days ago (and realized that the compiler was in most cases generating equal or better code with the auto-vectorizer than me using intrinsics) so I have kind of a new-found interest in the topic.

<comment><USER11> Two guesses:

First, making them immutable means you don't have to worry about memory barriers. That could be huge for data that's being shared by multiple threads. While these types logically have multiple elements, in reality they all fit within a single SSE register. Meaning the performance cost associated with having to worry about mutability could easily annihilate any potential performance boost you might get from being able to fiddle with the vector unit.

(Guess one-and-a-half is that, since these values are meant fit in a single CPU register, they're really more analogous to atomic types than they are to objects, anyway.)

Second guess is that it's more of a "pit of success" thing than a performance thing. Mutable value types in .NET are really problematic. I've seen so many bugs resulting from them that nowadays I consider them grounds for automatic rejection in code reviews.

<comment><USER23> The immutable design came from the class library folks (not my team [the JIT folks]). I believe the analogy to atomic types (integers aren't mutable) is pretty sound. The API really was cleaner by making them immutable. If you want to allow mutation, the API surface area really explodes, resulting in dramatically more JIT work to make them perform well.

</comment></comment></comment></comment><comment><USER24> There's not much in the way of contrary opinion here, so let me offer some. The approach of not tying you to a particular architecture is fundamentally wrong. The right way is to expose APIs for each processor architecture.

Here's why. SIMD offers no new capabilities (1), only more speed, and not much more at that, maybe 4x if you're lucky. It's also hard to use: it requires unnatural data layouts, and lacks many operations (e.g. integer division). None of this is specific to the .NET implementation: it's just the nature of the beast.

So successfully exploiting SIMD is not easy, and requires thinking at the level where instruction counts matter. And because the amount of parallelism is so limited, high level languages (by which I include C!) can very easily blow away any gains with suboptimal codegen. Just a handful of additional instructions can ruin your performance (2).

Here's what will go wrong with an architecture-independent SIMD API:

1\. Say you invoke an operation without an underlying native instruction. The compiler is forced to implement this by transferring the data to scalar registers, performing the operation, and then transferring the result back. Game over: this exercise is likely to eat up any performance benefit.

2\. To avoid this, say you limit the API to some "common subset" of all extant SIMD ISAs. The problem is, many algorithms admit vectorization only through the exotic instructions, such as POPCNT on SSE4, or the legendary vec_perm on Altivec. If this instruction is not exposed, you can't vectorize the algorithm. Game over again.

That's why software that takes advantage of SIMD invariably has separate implementations for each supported ISA. .NET should have followed suit: expose an API for each ISA (or a mega-API that covers all ISAs), and then provide rich information about which operations are implemented efficiently, and which are not, to allow apps to choose an optimal implementation at runtime. This API would demo and market very poorly, but the engineers will love it, because it's the one that enables the most benefit from SIMD.

1: with rare exceptions, such as the new fused multiply-add support in x86

2: Several years back, VC++ generated an all-bits-1 register by loading it from memory, instead of issuing a pcmpeqd, which caused my vector implementation to underperform my scalar one. This is my fear for the .NET implementation.

<comment><USER25> This made me think of clang/gcc's vector extensions [1], which, together with __builtin_shuffle can be used to get some real "ok" cross-platform (SSE/NEON/...) SIMD code going on. An example of this in usage is [2].

That said you're right, usually the best performance can only be obtained by using really specific instructions. But in my experience, a decent performance increase can be obtained by using the generic vector extensions.

Moreover, if you can use the vector extensions for a large part of the code, that means you have to write a lot less platform-specific stuff. I.e.: you increase portability anyway, since now you only have to rewrite 5 out of 20 functions instead of 20/20\. Even better, they allow one to write v3 = v1 + v2 instead of v3 = _mm_add_ps(v1,v2). The first one being clearer, more portable (will generate appropriate addps or equivalent NEON, ...) and plain nicer to read.

Your pcmpeqd example is a good example of an optimizer flaw. In my opinion this is orthogonal to whether or not to expose a specific or generic API. The compiler should've use the most efficient instruction for that simple idiom, period (without you telling it to use pcmpeqd). If we continue your line of reasoning, we're back to assembly for everything.

[1]: [https://vec.io/posts/gcc-and-clang-vector- extensions](https://vec.io/posts/gcc-and-clang-vector-extensions) (The vector extensions allow +,-,*,/,<,>,==,!= to be naturally used for SIMD types) [2]: [https://github.com/rikusalminen/threedee- simd](https://github.com/rikusalminen/threedee-simd)

</comment></comment><comment><USER26> I don't see any mention of shuffles, which I believe are regarded as the most important part of SIMD for high-performance.

Does anyone happen to know more about how/if shuffles are going to be exposed?

<comment><USER23> How would you like shuffles exposed? One of the things we really tried to do with this design is make sure it's NOT tied to one particular hardware implementation of SIMD.

<comment><USER27> Couldn't you expose machine-dependent stuff in a subclass?

SSE has a bunch of other useful instructions like PMOVMSKB (useful for fetching the result of vectorized comparisons, yay!), then there are string instructions (sometimes also useful outside of string processing), etc.

New versions (AVX-512) will also have mask registers for masked operations.

<comment><USER6> It sounds like they're trying to maintain platform independence while still abstracting platform specific low-level operations. If you utilize machine specific code in subclasses, how do you generate MSIL that remains independent?

If you really needed something like that, could you not use C++/CLI and expose those operations in your own unmanaged library? You will of course lose portability, but that seems like a possible work around.

</comment></comment></comment></comment><comment><USER28> And we've had vectorization years ago in the JVM.

<comment><USER29> And we've had straight marriage for years so why is gay marriage news, right?</comment></comment>


Holloway Guide to Equity Compensation - <AUTHOR> https://www.holloway.com/g/equity-compensation <comment><USER3> The search in this thing is incredible. Definitions come up, context comes up, even get results from the material in the linked resources. Really cool how easy it is to navigate--if you click a link to go to another section of the text, back arrow brings you back where you were. That really makes it easier to learn what you don't know, like flipping back and forth to a glossary or footnotes in a book but without any hassle.

</comment><comment><USER4> > _certain restrictions on it (like transfer restrictions)_

This is under appreciated outside executive levels. Start-ups are staying private longer. Most companies allow employees to sell their private shares (subject _e.g._ to a right of first refusal). Some, however, insert language requiring board approval for transfers. These shares trade at a steep discount, if they trade at all, and generally serve to give preferred stockholders a first crack at the exits.

<comment><USER5> I see how that term has that effect, but before you impute intentionality to it, bear in mind that transfer restrictions have been a standard, market term for employee equity for decades. Closely held private companies are itchy about who holds their stock.

<comment><USER6> They have at least one good reason to be itchy: too many direct stockholders and they have most of the same requirements with the SEC as publicly traded companies. Though that doesn't justify all possible restriction regimes, of course.

</comment></comment></comment><comment><USER7> This is insanely helpful. As employee #1 at a startup, should I get my 83b up front or in ~1 year when my first quarter of stock has vested?

<comment><USER8> An 83(b) election must be filed with the IRS within 30 days after the grant or purchase date of the restricted stock.

<comment><USER9> Note the restricted stock portion, you may not have received restricted stock as an early employee

</comment></comment></comment><comment><USER10> Searching answers on Google for this type of stuff has become futile - <USER2> much written it off at this point. Thank you for this. Wish it'd been around when I was at my first startup

<comment><USER11> My advice is, hire a lawyer and have him/her review and correct your option contract before you sign it. You will pay a few hundred dollars. It's worth it.

I was employee #1 with a substantial equity stake, and my lawyer has found half a dozen ways I could be screwed. By default these contracts are incredibly one sided, but they don't have to be. And as a rule in a startup if you can be legally screwed out of your money, you will be.

EDIT: The linked site does have great advice and is vastly better than just about anything else on the topic you can find on the internet. Just remember that there will be a _lawyer_ on the other end, and they know this stuff much better than you do. It's better to retain a lawyer on your end as well, especially if the amount of equity is non-trivial.

<comment><USER12> Also the math almost never works out in favor of working at a startup vs working hard at bigco.

Make a spreadsheet, add probabilities of how things will work with current IPO timelines (+10yrs), chances of exit at each startup stage, the loss your getting from investing the same amount of cash working at bigco in ETFs, projected career growth, cost of living, etc.

<comment><USER11> That's true. Don't neglect the cash base salary either, and don't overvalue the upside potential, because probabilistically speaking even under the best of circumstances it is likely worth much less than you think. Certain amount of faith is required, you should just moderate the amount of faith in anything startup-related unless it's late stage and things are going well, or unless you're a founder (and therefore you're mostly in control and are likely to benefit disproportionally in case of an exit). Even single-digit number first employees should be running these calculations in their head, with a healthy dose of pessimism.

There are other benefits to working at a startup though. For one thing you might end up on a great team. For another there's far less bureaucracy and process that gets in the way of doing things. For yet another, most of the truly "cool" things are done by startups, and your chance of getting a job doing something intellectually rewarding is far greater there (in my estimation at least). Simple fact is, FANGs of the world have some pretty cool teams, but those teams as a rule have no open positions, so pro tip: don't go to Google thinking you'll work on Brain or autonomous cars at any point in your future, unless you're joining those teams directly. Startups do have open positions every imaginable type of work, tech stack, or field.

But yeah, do consider whether money to fun balance is there, and if it's worth it for you.

</comment></comment></comment></comment><comment><USER13> This image [https://imgur.com/a/2Rzeac2](https://imgur.com/a/2Rzeac2) in section "Fundraising, growth, and dilution" _really_ says a lot! Person #4 in the company likely is as important as first 3, and took as much risk (also quit previous job and did not take a high-paying one at G/M/A/F), but ends up with 1/10 the share of the first 3 at best (options pool is spread between him and others).

<comment><USER14> I imagine person 4 comes in after an year or two after first 3 founders busted their arse to build a product to have the first few paying customers.

Before joining any company, you have to realize the opportunity cost. You could work at AAMG and make decent money being part of ~1 trillion companies. OR you choose to join a small startup that has managed to find a product market fit and now needs to scale to realize their potential and ride that wave.

<comment><USER13> In more sane parts of the world perhaps. In Silicon Valley, with VC funding, a year after company ia created, it is probably 50 people or more in size.

</comment></comment></comment><comment><USER15> After hearing about this for awhile and now playing with the product for the first time, I was super pumped to guess (and be right!) that the arrow keys could be used to help navigate sections. Nice touch, guys :)

</comment><comment><USER16> Wow, this is so helpful.

As other comments seem to say. I googled quickly around when joining my first startup and this guide would have avoided me some typical first-timer mistakes.

</comment><comment><USER17> Getting a 504 trying to access this page.

Edit: looks like it's back.

<comment><USER18> Same here.

The Google cache of holloway.com links to [https://github.com/jlevy/og-equity- compensation](https://github.com/jlevy/og-equity-compensation) \-- perhaps this is the same content as the original post? Can anyone verify?

<comment><USER19> Josh, co-founder at Holloway here. That's the original content, yes, but we've augmented a lot on Holloway, added comments and search features, etc. Having a couple traffic hiccoughs but try it soon as you get in, and look forward to feedback.

</comment></comment></comment><comment><USER20> This is literally the best thing I have ever read. For the first time ever, I feel like I know what position I am in as a founder.

</comment><comment><USER21> This guide is great, but if you are the author, please, please, please consider locking the top bar so it doesnt move while the reader is scrolling. Many people use the top of their screen as a place holder and this is basically unreadable on mobile.

<comment><USER22> Hi there! Andy Sparks here, Co-Founder of Holloway. This must be a bug—sorry you're having troubles. I know it's work for you, but we'd like to get it fixed. Can you email me a screenshot and any other details (email@example.com)?

</comment></comment><comment><USER23> github repo: [https://github.com/jlevy/og-equity- compensation/](https://github.com/jlevy/og-equity-compensation/)

</comment><comment><USER24> What do you do when a company won't give you all the info required to really evaluate an offer like the 409A or some such?

<comment><USER19> (Josh, co-founder of Holloway here.)

There are a couple sides to this. No company should or will tell every financial detail to every candidate. On the other hand, if a company has given you an offer and really wants to hire you, yet is very evasive about all the info you need to evaluate your offer, it can be a warning sign; it's likely indicative of the level of transparency you'll get as an employee, too. The 409A is material to understand your stock options, so very fair to ask about before signing.

Also—we'd love more questions like this in the marginal notes in the Guide, so it improves iteratively! If you (or anyone else) wants early access to that feature shoot an e-mail to firstname.lastname@example.com

</comment></comment><comment><USER25> It's really well organized and the menu is well-designed. One thing that would be nice, though, is if the menu were easier to scroll through. Without expanding anything, you can see the headers of all the sections ... but if you expand one thing, you have to drag and highlight in order to get to the bottom. IDK, maybe there's a scrolling tool that I'm missing, or maybe I'm all thumbs. I find this to be a problem with most of the internet, so.

<comment><USER22> Hello! Andy Sparks, co-founder of Holloway here. Thank you for the positive words on the organization and menu. I'm trying to get a better idea of the issue you're running into, as it doesn't sound like something we intended to have happen. Would you mind sending me a screenshot or more detail at email@example.com?

</comment></comment><comment><USER26> davidw guide to equity compensation: it's probably worth jack shit.

That said, this looks like a great guide if you're going to go that route.</comment>


The Nature of Code – evolutionary and emergent properties of nature in code - <AUTHOR> https://natureofcode.com/ <comment><USER2> Daniel Shiffman is the creator of The Coding Train, which is one of the most wonderful places to learn programming using the Processing JavaScript library P5.js

You can see his extensive catalogue of lessons here[0].

[0] [https://thecodingtrain.com/CodingChallenges/](https://thecodingtrain.com/CodingChallenges/)

</comment><comment><USER3> It's quite old already (from 2012), but still relevant, especially for creative coders.

For everybody who does not know the author—Daniel Shiffman—do yourself a favour and have a look at his Youtube tutorials.

[https://www.youtube.com/channel/UCvjgXvBlbQiydffZU7m1_aw](https://www.youtube.com/channel/UCvjgXvBlbQiydffZU7m1_aw)

</comment><comment><USER4> This book got me interested in physics and AI.

A full, pleasurable year of my programming life was inspired by this book. And what I learned from the physics part of the book made high school physics a piece of cake.

Thank you, Daniel Shiffman

</comment><comment><USER5> This is a very great book for people who want to get started coding for free.

I both kickstarted and reviewed this book on Slashdot back when it came out. [https://books.slashdot.org/story/13/01/09/160246/book- review...](https://books.slashdot.org/story/13/01/09/160246/book-review-the- nature-of-code)

The author is an awesome guy and accepts all errata with nothing but positive gratitude!

</comment><comment><USER6> Link got slashdotted? Having trouble loading content across my handheld.

<comment><USER7> Worked for me just now FWIW

</comment></comment><comment><USER8> This is an advertisement for a book. I see nothing of interest that could be discussed in the blurb.

<comment><USER9> You can read the whole book for free online: [https://natureofcode.com/book/](https://natureofcode.com/book/)

Which I highly recommend - it's great! :-)</comment></comment>


Brain-sensing technology allows typing at 12 words per minute - <AUTHOR> http://sciencebulletin.org/archives/5149.html <comment><USER2> I am not sure what is more surprising, that you can get 12WPM by simply using your brain, or that you can train monkeys to transcribe the New York Times or hamlet.

<comment><USER3> They're not transcribing it, so much as selecting the keys one would need to press in order to type the text. That is, the correct key lights up, and they move the cursor and mentally "click" to select it. This serves two purposes:

\- WPM is a difficult metric to "game", since if they make a mistake they have to select the backspace key, and then select the correct key again.

\- It's a proof of concept demonstration that a human (e.g. in the BrainGate[1] clinical trial) could use this prosthetic system to communicate in text. When a human were driving the system, the keys wouldn't light up; they'd just type freely.

[1] [http://www.braingate.org/](http://www.braingate.org/)

<comment><USER4> Ah, I was also tricked by "transcribe"... This is why reading science articles is so much better when there is also a comment section (HN/Reddit etc). So many articles don't actually point out that is going on _really_.

<comment><USER5> I've pretty much stopped reading articles entirely. I'd rather click through to the study, read the abstract, then skim through looking for anything interesting or obviously wrong. Combine that w/a high quality comment site as you mention, and it's a much more informative process, and takes about the same amount of time.

</comment></comment></comment></comment><comment><USER6> This paper is from a colleague in my lab at Stanford - happy to answer questions.

For intuition, this is like clicking on an on-screen keyboard, so the typing speed is very high given the constraint of focusing on each key as a separate, discrete movement.

<comment><USER4> It may be faster to use something like Dasher instead of an on-screen keyboard: [http://www.inference.phy.cam.ac.uk/dasher/DasherSummary2.htm...](http://www.inference.phy.cam.ac.uk/dasher/DasherSummary2.html)

<comment><USER7> Part of me wonders though - things seem a lot less discreet in dasher... but given that input is really in one dimension, and not two, it might be able to work faster...

<comment><USER8> > things seem a lot less discreet in dasher

There are discrete versions of dasher that operate using a single digital switch or actuator, rather than an analog input. As long as you can feed in one bit of information, Dasher can work with that.

</comment></comment></comment></comment><comment><USER9> For a bit of context, Stephen Hawking can only manage about 1 WPM last I read about him; I'm sure everyone here could appreciate a twelvefold increase in their ability to express themselves, even if the end result wasn't speedy.

<comment><USER10> Yeah, win for Stephen Hawking. Hopefully it gets even better.

<comment><USER9> Definitely. As bad as it would be to struggle with expressing a single word, that must be even more agonizing if you're a genius in high demand.

I also wonder if something like this could be adapted to test for locked-in syndrome?

</comment></comment></comment><comment><USER11> Important note: they were using monkeys and didn't take advantage of the speedups that humans would use, like adaptive letter-guessing/autocomplete:

>"Also understand that we're not using auto completion here like your smartphone does where it guesses your words for you,"

That would reduce the "distance" you have to move the cursor on average.

(Several years ago I had the idea to combine the accessibility software Dasher with the "Neural impulse actuator", which tranduces brain waves, but never went through with it, though I bought the tech.)

<comment><USER12> Well they're not using autocomplete, but the software sitting between the electrodes and the cursor is a black box as far as the article goes. If the software is trained or calibrated, what's to say that it isn't picking up some information from the structure of English.

Also depending the setup of the onscreen keyboard, it too could have error reducing aspects built in.

Also it's unclear whether the 12 wpm is actual wpm with back spacing and correction, or whether it's an 'adjusted' wpm based on the error rate.

This isn't to say that it's not an impressive result regardless. Just that I'm more skeptical of the 12 wpm.

</comment></comment><comment><USER13> Instead of moving a mouse, how much harder would it be to just try to learn a thought pattern for each letter?

Or better, learn 50 "commands" which could then be assigned to anything be it letters, tasks, phrases, etc.

<comment><USER14> IINM I think the limitation is in the ability to read such small signal changes. Considering all the noise (especially with topical sensors) and dealing with microvolts, it can be trivial to distinguish an eye blink where you're suddenly contracting muscles close to the brain. As opposed to distinguishing the thought pattern between thinking about a "dog" vs a "cat"

</comment></comment><comment><USER15> The paper itself is not yet available, but the same researchers have published before on this work: [http://www.stanford.edu/~shenoy/GroupResearchPublications.ht...](http://www.stanford.edu/~shenoy/GroupResearchPublications.htm)

[http://www.stanford.edu/~shenoy/GroupPublications/KaoEtAlIEE...](http://www.stanford.edu/~shenoy/GroupPublications/KaoEtAlIEEETBME2016-Preprint.pdf)

Reading the latter reveals the implant side is a 96 channel utah array.

</comment><comment><USER16> How does this compare to eyes tracking? 90% of the hyper fancy things using brain activity get pwned by simple eye tracking. Or are not usable in real life due to the equipment needed.

<comment><USER17> Even if eye tracking is better (and IIRC it is), this is still valuable for patients that don't have any other option left (like Stephen Hawking soon).

<comment><USER4> This still relies on visual feedback (you need to move a cursor on a screen). It would be better if you just had to think the letter itself, not drive a cursor over it.

<comment><USER18> Not much of a difference, actually. Once you've got your _brain_ trained to select the letters by location you can remove the eye tracking part and just use abstract thought.

"I'm thinking of a letter... On the far left of the keyboard, middle row."

<comment><USER4> I think there's not enough bandwidth for such information density. These usually work with 2D directional commands, you're driving the cursor up/down/left/right. You're not thinking of "letter E", but look at the screen and think of the direction where the cursor has to move from its current location to drift to E.

</comment></comment></comment></comment></comment><comment><USER19> On the other hand, it shows the primitive state of brain computer interfaces, that they are implanting a few electrodes in a region of the brain related to the hands, in order to move a mouse cursor. We're decades away from thinking to computers. What is the state of the art in brain interfaces?

<comment><USER20> > _We 're decades away from thinking to computers._

Considered most governments and corporations, the more decades, the better...

<comment><USER21> If the steady erosion of privacy is combined with a steady loss of government arresting powers (i.e. coercion through violence) and the steady decline of social conservatism (i.e. coercion through blackmail and hypocrisy), I'm surprisingly okay with that.

<comment><USER22> Government powers can only go up, never down. One possible exception is when government is in total decay, but that's only temporary state before it gets replaced by other strong government (through revolution or external conquest)

<comment><USER23> _" Government powers can only go up, never down."_

That's not really true. There were significant curtailments of US government power after scandals like Watergate, the Pentagon Papers, the revelations of MK ULTRA, and all the spying that was done on journalists, civil rights leaders, etc.

Of course, now there's been a backlash in the other direction, and it will probably get a lot worse before it will get better. But history has shown that it can get better.

Also, see the history of the Stasi in East Germany and Stalin in the USSR.

</comment></comment></comment></comment></comment><comment><USER24> Err.. isn't monkeys transcribing a New York Times article even more amazing?

<comment><USER17> Amazing maybe, but not really news. Monkeys could pilot the Mercury capsule, too. With several months of intense training, you can make them do a lot of tasks involving pattern recognition. Reliable brain-sensing, on the other hand, _is_ news.

<comment><USER25> Ahem. They didn't pilot the capsule. They were passengers.

<comment><USER17> Thank you for your opinion, Chuck.

<comment><USER17> Since people don't seem to get the reference: "Mercury astronauts are passengers, not pilots" was a prejudice against the budding manned space program, spread by among others Chuck Yeager. It seemed to hurt their ego that even a monkey could do it (…after months of training, which included electroshock therapy).

</comment></comment></comment></comment></comment><comment><USER26> Connecting brains to computers in order to type ??? Or Elon's Musk "neural lace" that enables interface between AI and brains ??? Such sad, shallow visions for such powerful technologies.

Maybe instead , we'll start really asking what is the good life(for both society and the person), we'll probably get answers like(from various philoshophers and religions): life full of love, compassion, empathy, peace, trancendence, meaning, service, self-actualiztion, health, etc.

And better understanding, control and training of the brain(maybe by using fmri neurofeedback) may be a great tool in achieving all of those qualities in a safe, effective and efficient manner, and of course fully based on personal choice.

How can this expand what it means to be human ? how could it shape society ?

And instead, we're talking about typing with the brain.

And we see this kind of thinking everywhere. for example , the world is filled with tons of "social" technologies, but we can't even get video chat with eye- contact, at people's homes ?

<comment><USER27> _How can this expand what it means to be human? How could it shape society?_

"Typing with the brain" can not only be very useful, but potentially life- transforming for those with mobility impairments -- e.g. quadriplegics, and those fully or partially paralyzed for other reasons.</comment></comment>


Steve Ballmer: Google Apps Blow, No One Actually Uses Them - <AUTHOR> http://www.alleyinsider.com/2008/10/steve-ballmer-disses-google-apps

<comment><USER2> That is kind of interesting. I would like to know if anyone have more on this.

I do feel that many of googles products are not used as much as one might expect.

Any more on this matter?

</comment><comment><USER2> That is kind of interesting. I would like to know if anyone have more on this.

I do feel that many of googles products are not used as much as one might expect.

Any more on this matter?</comment>


Why Blackberry Messenger is the next great social platform. - <AUTHOR> http://docs.numair.com/bbm.html

<comment><USER2> It seems like text messaging fills this gap for 90% of users. Yes it sounds a lot better to me, but aren't the mobile carriers going to hate (resist, etc) something that undercuts their cash cow of .25$ text messages?

<comment><USER3> To me, it's pretty much the same as the carriers not being too fond of, say, mobile AIM. They still get their data plan cash, though. The sooner more people/services move to BBM, the sooner I can get rid of my outrageously priced text messaging plan.</comment></comment>


Ask HN: Is there an app that can identify electronic components i.e. resistors? - <AUTHOR> <comment><USER2> No. Your best bet is to Google Image Search for "electronic components".</comment>


End to End Prediction of Buffer Overruns from Code via Neural Memory Networks - <AUTHOR> https://arxiv.org/abs/1703.02458 <comment><USER2> This is really cool. I've spent some time thinking about a similar idea in the past [0].

My idea was to parse the CVE database for bugs in open source code, then identify the patches used to fix the bugs. From the patch data, you can get an efficient diff of what the "vulnerable" code looks like and what the "fix" for it looks like. You can then convert the code to abstract syntax tree or feed it to a static analysis engine to use as "signals" in training a machine learning algorithm. Then you can apply the machine learning algorithm to open source databases and identify possibly vulnerable code paths.

Looks like this paper had success doing something similar. Awesome!

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

</comment><comment><USER3> The first thing it learns is to check if the source is in Rust and if so, vastly reduce the likelihood of a buffer overrun.

<comment><USER4> Groan. Rust fanboy here, but c'mon. Are you a member of the "Rust Evangelism Strikeforce" (as seen at [http://n-gate.com/](http://n-gate.com/))?</comment></comment>


TensorFlow machine learning now optimized for the Snapdragon 835 and Hexagon 682 - <AUTHOR> https://www.qualcomm.com/news/snapdragon/2017/01/09/tensorflow-machine-learning-now-optimized-snapdragon-835-and-hexagon-682 <comment><USER2> Qualcomm's Snapdragon chips ship with a Hexagon DSP core, which is optimized for high-throughput numerical calculations -- not the branch heavy code you'll see in most general-purpose applications.

TensorFlow does lots of matrix multiplies. The Hexagon chip can do 8 multiplies each cycle, and runs multiple threads on each core. The benchmark isn't clear, but it's likely that _one_ Hexagon instruction can replace multiple normal ARM instructions for the inner loop.

You can see some more on how the Hexagon DSP works here: [http://pages.cs.wisc.edu/~danav/pubs/qcom/hexagon_hotchips20...](http://pages.cs.wisc.edu/~danav/pubs/qcom/hexagon_hotchips2013.pdf)

<comment><USER3> Looks like those slides are for an older version. Since then they've bumped up the size of the vector execution units from 64 bits to 1024 bits and quadrupled the number of them, if I'm reading this right.

[http://www.anandtech.com/show/10948/qualcomm- snapdragon-835-...](http://www.anandtech.com/show/10948/qualcomm- snapdragon-835-kryo-280-adreno-540/2)

</comment></comment><comment><USER4> Unfortunately, this DSP is not FOSS, you need an SDK for this with binary components. Hopefully some day we have a cross-DSP standard or at least documentation in order to use said chips. OpenCL could also acquire a DSP profile.

<comment><USER5> A DSP is significantly simpler than a CPU, specially this particular bland.

The hard part is to implement it efficiently (power, area speed). So in theory with could have an open source design and the vendors could still compete with each other by providing the most efficient implementation.

</comment></comment><comment><USER6> Nice, looks like about 10x speed up for this classification task.

I think there are big gains to be made in lower precision inference too. Lots of people doing interesting work in that area, check out these guys - [https://xnor.ai/](https://xnor.ai/) [https://arxiv.org/abs/1603.05279](https://arxiv.org/abs/1603.05279)

</comment><comment><USER7> Are the two devices running the same model? The article claims the DSP has higher confidence, but I don't see why that would be the case. I suppose one could work at a higher precision but that wouldn't make sense if they're comparing performance.

<comment><USER8> I've talked a little bit with some engineers at Qualcomm who worked on projects like this. My impression was that they make a lot of compromises when they optimize a computer vision algorithm for their hardware which slightly alters the result, but can run extremely fast with comparable performance. It's likely they're doing something similar here, which might explain the difference in confidences, but I highly doubt that it objectively classifies images better than the one running on the CPU. If anything the better performance is an illusion just because the model running on the DSP reacts more quickly.

</comment></comment><comment><USER9> I have a basic understanding of machine learning and absolutely no understanding of TensorFlow.

Can someone help me understand what is going on here?

Are we doing just doing prediction for a model on a mobile device instead of in the cloud? If so, for what kinds of scenarios is this useful?

<comment><USER3> Sure! They have a neural net that they pre-trained for image recognition as a demo. They ran it on the mobile device both times -- no cloud involved -- but the one on the left is running on the CPU, while the one on the right is running on a DSP located on the same chip. The DSP is specialized for workloads that have very regular control flow and involve a lot of fixed-point arithmetic. Running the neural network is such a workload, so they get impressive speed and power improvements by using the DSP instead of the CPU.

<comment><USER10> How does training the brain compare to running a trained brain?

Can the pre-trained brain (the one in the phone) flip to training mode? Can you teach it something and upload that new training result to the original?

Or for things it doesn't recognise, do you need to add the images and classification to the training data and create a 'new brain' and download it to the phone?

Is there one super organism (cloud based learning) that gives birth to millions of mini-minds. Each mini-mind asking it's parent to help it with things it doesn't understand. In 20 years time what will this say about consciousness? Where would it live? Is this a new way to think about minds, those that are distributed in many physicals devices?

And the precision of the hardware changing thought processes in subtle ways is very interesting. Upgrading a neural net to a new hardware platform would change how it works, how it thinks and makes decisions.

<comment><USER11> > How does training the brain compare to running a trained brain?

Harder operations and you need to do a lot more of them. Far more suited to having a single massive training system then send out the information just for inference.

Another thing that can be done is to train a large neural net then figure out which bits you can cut out without sacrificing much accuracy. The newer, smaller net is then faster to run and more likely to actually fit neatly into the RAM on your phone.

> Can the pre-trained brain (the one in the phone) flip to training mode? Can > you teach it something and upload that new training result to the original?

Technically you probably could, but practically the answer is no for the types of nets used in this kind of thing. You'd want to be training the net on millions of images, and even if it were as fast as the inference on the phones that'd still take way too long.

[edit - interestingly this is not only technically possible but pretty much what is often done but on more powerful machines. You can start with a pre- trained network or model and then "fine tune" it with your own data: [http://cs231n.github.io/transfer-learning/](http://cs231n.github.io/transfer- learning/)]

> Or for things it doesn't recognise, do you need to add the images and > classification to the training data and create a 'new brain' and download it > to the phone?

This is generally the approach, yes. It has other advantages though, the performance can be checked and compared once then re-used lots of times.

> Is there one super organism (cloud based learning) that gives birth to > millions of mini-minds. Each mini-mind asking it's parent to help it with > things it doesn't understand. In 20 years time what will this say about > consciousness? Where would it live? Is this a new way to think about minds, > those that are distributed in many physicals devices?

In many ways, sounds similar to delegating work to more junior / less well trained staff.

</comment></comment></comment></comment><comment><USER12> In some of these examples the Hexagon DSP one detects it first but with a low confidence, and then the CPU detects it later with a higher confidence than the Hexagon DSP one has yet obtained.

If you were using this for a real purpose, would you only consider it identified at a certain confidence? If you did then the CPU one is surprisingly more performant in some of these examples despite taking longer to get to the object at all.

<comment><USER11> They appear to be seeing slightly different scenes. I think the phones are next to each other, and this might explain the difference in what they're reporting.

I'd be very interested to know if there's any difference in the processing that should be taken into account however.

</comment></comment><comment><USER13> This is absolutely crazy... The response time is unbelievable.

</comment><comment><USER14> What kinds of "AI" is likely to be viable to run on a snapdragon 835+682?

Recognizing faces? Voice? Handwriting? Captions for photos? Natural Language queries (like google's AI assistant)? Positioning by recognizing landmarks? Simple autonmous driving (say RC cars)? Flying (quad rotors or rc planes)? Cars?

Or I guess a better question... will this change anything except decrease your need for a good network?

<comment><USER15> Being able to do all these works on a cell phone, with no network, should be a big gain.

<comment><USER16> Cell phones were already powerful enough for most of this to begin with. Face recognition? Windows 98 on a 180MHz Evergreen Overclocked processor and 48MB RAM did that just fine. Voice? Ditto. Handwriting recognition? Palm Pilots with far less power could do it.

I think nobody's bothered to code that stuff in, because, well, despite trying time and time again to make these hot-shit features for a couple of decades, these features end up unused. Those that pay attention to history see this, and figure "Probably not worth trying, even in this day and age."

<comment><USER17> Maybe they are unused because the implementation was poor. And the implementation was poor because a Pentium 2 processor is shit and deep learning has only been practical in the last couple of years.

More specifically, I had a Palm Pilot, and you had to write using weird letter shapes for it to work.

<comment><USER16> The implementation worked great. You walked up to your computer, turned it on, and looked at the camera. Bam! You were logged in, assuming you had enough proper light on your face for the software to make out your facial shape.

It was just bloody annoying because you had to wait about 15 seconds for it to figure everything out. It was far faster to just use the keyboard.

</comment></comment></comment></comment></comment><comment><USER18> This is the new trend - dedicated AI coprocessor. Fast and less power hungry.

<comment><USER19> There are speculations [1], saying that Snapdragon 835 will be used in Samsung Galaxy S8, HTC 11, OnePlus 4, LG G6.

[1] [http://www.pcadvisor.co.uk/new-product/mobile- phone/snapdrag...](http://www.pcadvisor.co.uk/new-product/mobile- phone/snapdragon-835-specs-features-meet-chip-that-will- power-2017-flagships-3649321/)

<comment><USER20> Wow if Samsung will be using it that will show how powerful it is. I'm eyeing a OP4 for my next phone but I hope they don't jump the price again.

<comment><USER21> Eh, samsung is normally using qualcomm flagship CPUs for their north american handsets (except for the snapdragon 810 with its heat issues).

Generally (yes there are exceptions) qualcomm produces the best flagship arm CPUs outside of apple.

</comment></comment></comment></comment><comment><USER22> I for one am curious how large the image classification neural net is (in MB). I've come across some image classifier (vgg16) in some ML course that was a 500MB file, although the format may have been very inefficient.

If it's a 100MB file, you'd basically have to ship it with the operating system.

</comment><comment><USER23> Is this available now or just announced? I've searched their site and forums but can't find anything that's been released, including for the 820, aside from some lower-level SDKs (comma.ai's openpilot uses these lower-level SDKs in their closed-source portion).

</comment><comment><USER24> Can someone explain what did qualcomm build here ? is this CUDA for ARM ?

<comment><USER25> More like a CUDAish backend for a specific application. And for Hexagon rather than ARM, Hexagon and ARM are both architectures. ARM is a RISC for application processing and Hexagon is a VLIW for digital signal processing.

</comment></comment><comment><USER26> I wonder how this compares to apple's gpu on iPhone 7.

Having Siri do local voice and image recognition would be killer. I hate the latency currently for the AI agents

</comment><comment><USER27> Hopefully the SOC will run with a recent kernel.</comment>


Ask HN:What's the name of that CMS? - <AUTHOR>

I'm looking all over for this CMS I ran into from hacker news - it uses Apache and static content on the filsystem to generate the html pages.<p>It's name was kinda weird, was a woman's name - like LindaApp or WandaApp. Anyone remember this? <comment><AUTHOR> Got it: <http://www.staceyapp.com/>

</comment><comment><USER2> Jekyll? <http://jekyllrb.com/>

<comment><AUTHOR> Nope not jekyll, seen that one and I like it. I'm pretty sure this one had a woman's name though.</comment></comment>


Ask HN: How does one become an ethical hacker? - <AUTHOR> I'm interested in becoming a ethical hacker. May I know what does it take to become an ethical hacker? <comment><USER2> Start by learning the basics. If you don't know how to code, that's probably a good place to start. Learn about web applications and network protocols. Learn the basics of Linux and Windows system administration.

Read some books, e.g. The Web Application Hacker's Handbook [1], The Tangled Web [2], Nmap Network Scanning [3]. Study the OWASP wiki [4]. Familiarize yourself with the tools of the trade: Nmap, Burp Suite, Nessus, IDA Pro, ...

Learn to recognize strange and suspicious behaviors in applications. Learn to recognize implementations that are almost, but not quite, what they should be. To get good at this, you have to be familiar with the underlying technologies, frameworks, and best practices. Having experience in software development or system administration helps a lot.

Most importantly: hack. You really only learn by doing. There are plenty of opportunities to hack legally and ethically and even make some money doing it. Set up WebGoat [5] and go through the lessons. Get on HackerOne [6] and participate in bug bounty programs. Learn how to responsibly disclose issues to vendors.

And finally, get involved in the infosec community. Follow interesting people on Twitter. Attend local meetups. Go to conferences. Ask questions and help others to learn as well.

[1] [http://mdsec.net/wahh/](http://mdsec.net/wahh/) [2] [http://lcamtuf.coredump.cx/tangled/](http://lcamtuf.coredump.cx/tangled/) [3] [https://nmap.org/book/](https://nmap.org/book/) [4] [https://www.owasp.org/index.php/Main_Page](https://www.owasp.org/index.php/Main_Page) [5] [https://github.com/WebGoat/WebGoat](https://github.com/WebGoat/WebGoat) [6] [https://hackerone.com/](https://hackerone.com/)

</comment><comment><USER3> [https://bugcrowd.com/](https://bugcrowd.com/) & [https://forum.bugcrowd.com/t/researcher-resources-getting- st...](https://forum.bugcrowd.com/t/researcher-resources-getting-started/115)

</comment><comment><USER4> Follow this [http://www.catb.org/esr/faqs/hacker- howto.html](http://www.catb.org/esr/faqs/hacker-howto.html) and then watch mr robot.

</comment><comment><USER5> [https://www.cybrary.it/](https://www.cybrary.it/)

</comment><comment><USER6> Well first you have to decide what is ethical. Good luck with that...

</comment><comment><USER7> You would first have to define ethical.

</comment><comment><USER8> First off, learn to hack?

<comment><AUTHOR> Do you have any good resources on that? :)

</comment></comment><comment><USER9> learn social engineering</comment>