The biggest issue facing America - <AUTHOR> http://lewmoorman.com/the-biggest-issue-facing-america

<comment><USER2> The simplest thing to do is pick out the best healthcare system in the world, and then replicate it exactly. So bring in the top officials from Singapore, put them on an independent commission to redesign the healthcare system, and force Congress to pass exactly the plan they come up with.

Read more about Singapore's healthcare system here: [http://econlog.econlib.org/archives/2008/01/singapores_heal....](http://econlog.econlib.org/archives/2008/01/singapores_heal.html) [http://www.american.com/archive/2008/may-june-magazine- conte...](http://www.american.com/archive/2008/may-june-magazine-contents/the- singapore-model)

But coming back to Earth, such a plan could never happen. If you approach the problem from the perspective of a hypothetical policy advisor, there is very little that is both a) politically possible and b) would actually improve the system. Raising the caps on medical school enrollment is an obvious fix that would reduce costs without costing taxpayers anything, but the doctors will try their hardest to block it. A mandate to buy insurance makes sense in theory, but in practice the required level of healthcare to buy gets set way, way, too high, and so a mandate ends up being a huge transfer from citizens to the healthcare industry. There are dozens of other examples. Our system is f __*ed up for a reason, and until the political system is reformed, policy reform is impossible.

In reality, healthcare spending will continue to rise until it simply cannot rise further. The spending will be distributed according to political power.

<comment><USER3> > The simplest thing to do is pick out the best healthcare system in the > world, and then replicate it exactly. So bring in the top officials from > Singapore, put them on an independent commission to redesign the healthcare > system, and force Congress to pass exactly the plan they come up with.

You'd have to also replicate the covered population and make sure that there's a "USA" outside paying for drug development and the like.

<comment><USER4> As much as people speak of the drug development problem, how many copies of Viagra do we need? How many more statins? The drugs don't even seem to get better, they just are finding ways to extend patents!

Past that, most of the competition is not in innovation, but rather in marketing.

"The researchers' estimate is based on the systematic collection of data directly from the industry and doctors during 2004, which shows the U.S. pharmaceutical industry spent 24.4% of the sales dollar on promotion, versus 13.4% for research and development, as a percentage of US domestic sales of US$235.4 billion." -- [http://www.sciencedaily.com/releases/2008/01/080105140107.ht...](http://www.sciencedaily.com/releases/2008/01/080105140107.htm)

Finally, the NIH is picking up most of the tab for fundamental research, and as such, it isn't the drug company that is leading innovation. As such, I find the drug development argument hollow.

<comment><USER3> > How many more statins?

Are you claiming that the existing statins address all relevant cases?

> which shows the U.S. pharmaceutical industry spent 24.4% of the sales dollar > on promotion, versus 13.4% for research and development, as a percentage of > US domestic sales of US$235.4 billion

That's a non sequitor.

> Finally, the NIH is picking up most of the tab for fundamental research

"fundamental research" isn't a significant fraction of the cost of drug development, aka "getting a drug into the pharmacy".

</comment></comment></comment></comment><comment><USER5> This might actually be a problem that politics just fails monumentally as a tool for fixing. Like trying to repair an MG with a herring.

There will come a time when technology will make it possible to keep someone alive indefinitely so long as you spend exponentially more money to do so. Everyone has been conditioned to think that they deserve the _best_ healthcare regardless of what choices they've made in their lives. They will not accept that someone that has more money lives longer.

The only option is rationing. Either the naked market does it or the government does it. The perceived (and often genuine) inequality of the market practically guarantees that the voting public will demand the latter. This means that _someone_ steps in and essentially decides who lives and dies. Some agency will perform the brutal calculus that decides that a Nobel winning scientist is a better investment to keep alive than a retired truck driver. Historically this has a terrible track record. Anyone willing to wield this power is usually the last person you'd want to actually do so.

Eventually technology will take us through this transitional period into a better time where healthcare, like food, is cheap enough that everyone can have as much as is needed and the only shortages will be caused by politics as is the case for food now.

It seems the best thing we can do as a species is knuckle down and drive through this transitional period as fast as we can. I'm kind of hoping that this current recession produces a few more of the "knuckle down and drive through" types as they seem to be in short supply these days.

<comment><USER6> Can we discuss health care without the science fiction and doomsday scenarios?

I realize that the USA is used to looking inward for solutions, but other governments are solving these problems, better, _today_.

Every discussion I have with Americans about healthcare leads directly to these imagined totalitarian futures, as if "everybody" knew that this was what happens. I don't understand it. Where did you all learn this narrative? Was there some nursery rhyme about the evils of socialized medicine?

<comment><USER7> > _Every discussion I have with Americans about healthcare leads directly to > these imagined totalitarian futures, as if "everybody" knew that this was > what happens. I don't understand it. Where did you all learn this > narrative?_

Pre-WWII footage of Nazi health programs, Aldous Huxley's _Brave New World_ , the movie _Soylent Green_ and pretty much everything William Gibson has written. We've seen just about every distopian outcome imaginable.

Star Trek counters this to some degree, but it's considered "nerdy".

</comment></comment></comment><comment> patrickg-zill It is a good start, but he doesn't have the detail at the local level to see what is going on - the prices are all over the map and there is no way to rationally determine what is expensive.

I have a weird plan where I pay a percentage of the total cost, but have to pay for everything first and then get reimbursed; but ultimately a more expensive operation ends up costing me more, so it always makes sense to shop around.

As a result, I know all the cash costs for an upcoming outpatient surgery I am having, and whether they offer cash discounts.

The difference between various hospitals and service centers is HUGE, like 5 to 8 times from one place to another.

Imaging center "A" : CT scan $232 ; Chest Xray: $33; EKG: $21

Hospitals "A" and "B" : CT scan >$1000; Xray $185; EKG: > $100

You end up renting the operating room (the surgeon has privileges at 4 different locations):

(new, shiny, modern) Surgery Center "A": $1200 with cash discount

Hospital "A" : no exact price, "range is $7K to $11K, typical is $9500"

Hospital "B" : no exact price, "range is about $7500, cash discount = $5000"

HOW can it even be reasonable that there is such a discrepancy in pricing? For one hospital, the CT scan "interpretation charge" was more than the $232 I spent on the entire scan + interpretation at the imaging place I went to.

(And yes, I used the exact same billing code in discussions with all the medical billing people I talked to.)

<comment> patrickg-zill I should add, that I think that part of what is going on with the hospitals, is to make cash payments so cumbersome, that people are herded into the arms of the insurance companies.

</comment></comment><comment><USER8> Hmm, no citations, no real references. The graph is 50% "estimated" from 2005 and pre-estimated values doesn't have the exponential growth thats demonstrated on the graph. Lets also keep in mind the new medicare/medicaid restrictions that is drastically effects what is being paid for by the state and what hospitals are now footing the bill for.

"Social security can be solved" sweet, lets get on that. glad he had some solutions in this article.

why is this on on HN btw?

<comment><AUTHOR> The whole point of the post is I don't have solutions.

Try to refute the point that healthcare is the massive piece of our unfunded liabilities. You can't. Good resource: <http://www.pgpf.org/>

What I am concerned with is I don't think the coming debate will get very far. We have a visceral fear of change in this arena and it will hurt us.

</comment></comment><comment><USER9> I just finished "In Defense of Food." Michael Pollan makes a pretty good case that the health care issue is driven by processed food - causing obesity, type 2 diabetes, high blood pressure and cancer. Essentially if americans ate less processed food (and less food overall), there wouldn't be a healthcare issue.

<comment><USER10> Absolutely. One of the best things we could do would be changing our farm subsidies away from corn and sugar and instead contribute to many forms of fresh produce.

</comment></comment><comment> old-gregg A friend of mine got physically attacked by an old woman in a supermarket because he was wearing his scrubs. She didn't stop throwing shit at him until security took her away.

</comment><comment><USER11> Why does the bad trend only start in the Estimated part of the graph?

<comment><AUTHOR> baby boomers hit the 60-80s. and most healthcare costs are in your later years.

<comment><USER11> But if the trend hasn't started yet, how can the graph possibly hope to extrapolate it with any degree of accuracy?

<comment><USER12> It doesn't, but I think you can do the back-of-the-napkin math yourself. Baby Boomers are the 80 million "pig in the python" and they starting to retire right about now (2007-2009).

</comment></comment></comment></comment><comment><USER13> some points:

\- healthcare is not a business. get over it. the law says you cannot decline emergency care. there is no business model here, any more than there is in running the navy. its a cost.

\- you care about public health. meaning, you care if other people are healthy. do you go to the mall or restaurants? if you do, you care if the person next to you has TB. infectous diseases doesn't care about your fully- paid premiums...it matters if other people are also healthy. this once again goes to the fact that healthcare is not a business.

\- single payer is the only model that works. or would you prefer to spend another century experimenting with craptastic half-baked business/public hybrids? all health insurance companies must go. the government itself chooses single payer when it needs to run large healthcare plans. the VA, military, federal govt...they all go through single-payer.

\- healthcare will be rationed. deal with it. water is rationed. the carpool lane is rationed. bandwidth is rationed. why would healthcare not be rationed?

<comment><USER3> > water is rationed. ... bandwidth is rationed.

Nope.

I'm pretty sure that I can buy as much water as I want and I know that I can buy as much bandwidth as I want.

<comment><USER14> _I can buy as much water as I want_

Try saying that in... Colorado and see how far you get before you get your lights punched out.

Water rights and rationing are serious business.

<comment><USER3> > Try saying that in... Colorado and see how far you get before you get your > lights punched out.

I said "buy". Even Coloradans have mastered the fine art of saying "no thanks" when someone offers to buy something for a price that they don't like. And, when the price is acceptable, they sell.

Yes, Water rights are for sale in Colorado.

And, most people don't live in Colorado (or the Mojave).

<comment><USER15> On points 2 & 3: True.

But more and more of the country (and world) are having the same issues that Colorado (or the Mojave) have.

<comment><USER3> I didn't mention that the fight is over cheap water.

The Mojave isn't that far from an absurdly large source of expensive water.

</comment></comment></comment></comment></comment></comment><comment><USER16> These aren't the forums you're looking for.

You can go about your business.

Move along, move along.</comment>


LocalStorageDB - a simple, tiny database layer for localStorage - <AUTHOR> http://nadh.in/code/localstoragedb/

<comment><USER2> How does this compare with TaffyDB?</comment>


Happy 20th birthday, Internet worm - <AUTHOR> http://blogs.zdnet.com/security/?p=2096

<comment><AUTHOR> (A better link: [http://www.networkworld.com/news/2008/103008-morris- worm.htm...](http://www.networkworld.com/news/2008/103008-morris-worm.html) )

When my friends and I got our hands on the source code of the worm it took us a while to understand it. It was ahead of anything else we had seen before and it sure pushed a few of us towards computer security. And it served as an early wake up call for sysops, something the Windows camp for example got too late.

Now virus and worm researchers have strong and careful methodology. Something particularly interesting today is mobile phone security research performed on Faraday cages: <http://radian.org/notebook/van-helsingfors> (scroll close to bottom.)

</comment><comment><USER2> He wasn't "caught." He turned himself in.

</comment><comment><USER3> I don't hear attacks like those mentioned in this article nowadays, prolly because of 1) widespread usage of FF/Thunderbird (IE/Outlook is still in the map thanks to BIG corporates) 2) More Macs 3) Hackers have been force- civilized at a correctional facility called Y-combinator HN.

<comment><USER4> I don't think the first worm is comparable to modern viruses, at all. For one thing, the intention was (mostly) innocent, but things got out of control (young folks are often completely blind to the "what's the worst that could happen?" side of things). For another, most folks viewed it as a necessary bump in the road on the path to wider spread Internet usage. There were numerous serious security flaws in the wild that simply were not being patched. I remember the aftermath of the worm, and most of my geeky friends thought rtm got a bum wrap over the whole thing, when it became a legal matter. (We were all doing far more willfully malicious things in our small town way. Phreaking, warez, etc. was how nerds without access to the Internet got up to no good back then.)

The worm is also part of why modern BIND and Sendmail have reasonably good security records. No one took security seriously until then...but for the Internet to be as successful as it has been, security has to be the first and last thing any developer thinks about.

<comment><USER5> BIND 9, the security-based rewrite, is relatively recent. Sendmail X, the same, isn't in widespread use at all yet (I'm not 100% certain it's even out).

The worm (as worms do) exploited vulnerabilities, which means it wasn't exactly intended to have the consent of the people whose machines were exploited.

Also, unverified from Wikipedia - "The worm was released from MIT to disguise the fact that the worm originally came from Cornell." Which seems to indicate that Morris indeed knew what he was doing would incure someone's ire.

Though I do agree the worm, like so many telnet password sniffing attempts later on, raised awareness of security.</comment></comment></comment>


Digital identity cards: Estonia takes the plunge - <AUTHOR> http://www.economist.com/news/international/21605923-national-identity-scheme-goes-global-estonia-takes-plunge <comment><USER2> Obligatory:

A National ID Card Wouldn't Make Us Safer

\- Bruce Schneier

[https://www.schneier.com/essays/archives/2004/04/a_national_...](https://www.schneier.com/essays/archives/2004/04/a_national_id_card_w.html)

> But my primary objection isn't the totalitarian potential of national IDs, > nor the likelihood that they'll create a whole immense new class of social > and economic dislocations. Nor is it the opportunities they will create for > colossal boondoggles by government contractors. My objection to the national > ID card, at least for the purposes of this essay, is much simpler:

> It won't work. It won't make us more secure.

<comment><USER3> I understood this to be something different from what Schneier describes. (Though I could be mistaken.) I took this to be primarily an API for Internet applications to verify an end user's identity claims. I realize there are physical cards involved, and those could be problematic, but the API part sounds better.

The failure modes Scheier describes would still be applicable, of course. But as a developer, I might still appreciate having the system available. I couldn't trust its responses beyond a reasonable doubt. But still it might be valuable to have some extra degree of certainty about a user's identity, in some scenarios.

Let's say, for example, I'm developing an online liquor store. Let's say I accept various forms of payment, some of which don't come with age verification. I might appreciate a simple, unified ID API for that purpose. Granted, it would still be possible for minors to exploit the vulnerabilities Schneier describes and buy alcohol from me. But conceivably, if that happened, the law might grant me immunity, because I checked against the government API and the failure was on the government's part. Which would be a valuable assurance for me as the developer or business owner.

<comment><USER4> In Finland we have a system based on authenticating through your bank (TUPAS[1]). It works pretty well, and is easy, at least for the end-user, to use (you just select your bank and get redirected to their login site; the banks system then passes your info to the site). I don't know what kind of requirements there are for businesses to use it though.

[1] [http://en.m.wikipedia.org/wiki/TUPAS](http://en.m.wikipedia.org/wiki/TUPAS)

</comment></comment></comment><comment><USER5> _" in over a decade, no security breaches have been reported"_

False! If someone has access to your Estonian ID card for about 11.5 hours or 27 hours (depending if the card uses 1024-bit or 2048-bit RSA keys), he can decrypt documents or forge e-signatures, even without knowing your PIN code: [https://eprint.iacr.org/2012/417.pdf](https://eprint.iacr.org/2012/417.pdf)

More tech details about the card: [https://www.opensc- project.org/opensc/wiki/EstonianEid](https://www.opensc- project.org/opensc/wiki/EstonianEid)

</comment><comment><USER3> There are a few scenarios where I, as a developer, would find it very helpful to be able to verify real-world identities. For example, I've worked on applications where there were incentives for Mallory to impersonate Alice and attempt to legally bind Alice to something. Having a way to verify that the end user is truly Alice would be great in that type of scenario.

On the other hand, there are lots of apps where you don't _really_ need to be able to verify the end user's identity. Like Twitter. I can imagine a world where such applications require verified ID from all users, just because the government makes it really easy to do so. That would be a big loss for privacy an anonymity. As has been discussed at length elsewhere, providing an anonymous (or pseudonymous) voice for people is one of the Internet's most important function.

</comment><comment><USER6> I did not expect to see so many people so strongly against identity cards. I have had one for a while and it's very convenient and useful.

How is this different from passports? The government already has your basic information. Why passports and not identity cards? To me, my ID card is like a passport in credit card dimensions.

<comment><USER7> In the US it's very easy to live your entire life without a passport.

At any given time less than half of Americans have valid passports.

<comment><USER8> isn't in the US also possible to live without an ID card?

<comment><USER9> There's no unified ID card system in the first place. Usually state driver's licenses fill that role, but obviously not everybody has one of those.

<comment><USER10> I don't know. Social Security Numbers (SSN) we have are a national ID number in pretty much everything but name. And even though they are explicitly not supposed to be used as identification (it says so on the card), that's how it's used 99% in practice.

</comment></comment></comment></comment></comment><comment><USER11> This is very impressive and I hope it works out well for them. It has some serious risks in terms of privacy/government surveillance, however. A single theft of a backup and the entire country's data is violated.

The other issue I see is Estonia/EU doesn't exactly have the most robust freedom of expression:

[http://www.article19.org/resources.php/resource/37287/en/eur...](http://www.article19.org/resources.php/resource/37287/en/european- court-strikes-serious-blow-to-free-speech-online)

Without that, I'm not sure I'd really want to participate.

</comment><comment><USER12> Some of the comments here bring to mind a quote by Eugene McCarthy:

"The only thing that saves us from the bureaucracy is inefficiency. An efficient bureaucracy is the greatest threat to liberty."

<comment><USER13> Have you read Frank Herbert's Jorj McKie series of books?

[http://infohost.nmt.edu/~shipman/reading/mckie.html](http://infohost.nmt.edu/~shipman/reading/mckie.html)

"The main theme of the two principal Jorj X. McKie stories, Whipping Star and The Dosadi Experiment, is the Bureau of Sabotage, an interesting concept in government that is kind of like a ninja GAO.

The idea is that all governments and other bureaucracies tend to snowball over time, finally becoming juggernauts that crush mere humans unthinkingly. So the Bureau of Sabotage was founded with a legal right to throw wrenches into the gears of bureaucracies. No agency can sabotage the BuSab itself.

So what keeps the BuSab from turning into a juggernaut? Their promotion policy. The way you get promoted is to sabotage your boss."

<comment><USER14> > So what keeps the BuSab from turning into a juggernaut? Their promotion > policy. The way you get promoted is to sabotage your boss."

That sounds like a fascinating set of stories and I'd love to read them.

That said, I have full faith in the corruptibility of human beings to assume that they would find some way to capture that agency too.

</comment></comment></comment><comment><USER14> > Estonia's approach makes life efficient: taxes take less than an hour to > file, and refunds are paid within 48 hours

Yes, sacrificing privacy and liberty can provide conveniences - this is nothing new; we've known it since Huxley's _Brave New World_ , if not earlier.

That doesn't mean these policies are something we want to emulate, such as their stance on sex trafficking[0], free speech[1], and other human rights. Authoritarian policies like 'national identity' initiatives are very strongly correlated with abuses in human and civil rights.

[0] [https://en.wikipedia.org/wiki/Human_rights_in_Estonia#Traffi...](https://en.wikipedia.org/wiki/Human_rights_in_Estonia#Trafficking_in_persons)

[1] Ibid, [http://www.article19.org/resources.php/resource/37287/en/eur...](http://www.article19.org/resources.php/resource/37287/en/european- court-strikes-serious-blow-to-free-speech-online)

<comment><USER15> Neither of those links support your assertion that identity schemes are "authoritarian" or "are very strongly correlated with abuses in human and civil rights"

<comment><USER14> > your assertion that identity schemes are "authoritarian"

Well, no, that assertion is a subjective statement, so it's not possible to cite that. (Hence why I didn't - the footnote appears immediately after the portion of text being cited).

The links are intended to demonstrate that there are a number of other aspects of Estonian society that we might not want to emulate. Cherry-picking one benefit would be misleading.

> or "are very strongly correlated with abuses in human and civil rights"

The original sentence was "Authoritarian policies ... are very strongly correlated with abuses in human and civil rights". Would it be clearer if I replaced the word "policies" with "governments"?

<comment><USER15> Perhaps I misinterpreted your post, but what I got from it is that you were against identity schemes (attaching the adjective "authoritarian" to them).

Estonia might be an authoritarian hellhole, but I wouldn't say the ID system has anything to do with it. That edit probably would help :)

</comment></comment></comment></comment><comment><USER16> This is a very impressive, forward-thinking initiative. No doubt it'll falter, act clunky and glitchy at first, and probably be cracked at least once, but this is the direction societies are moving in, and it's good of (and likely, for) Estonia to take the plunge first.

An interesting point to consider: How would a formalized electronic ID scheme affect our present concerns with respect to governments spying on their citizens? On the one hand, putting everyone's public lives online will make it a lot easier to start aggregating data for unwholesome purposes, and puts everyone's personal information in potentially vulnerable computer systems. On the other hand, there are huge efficiency gains and convenience benefits that come from digitizing everything, and maybe having a government bureaucracy centered around digital records will confer that medium with the level of discretion the bureaucracy currently gives paper records.

<comment><USER3> Depending on the implementation, it would be possible to limit the government's collection of data to the following:

1) The underlying identity info such as SSN, photo, name, birthdate, etc. Which most governments already have even without this system.

2) A record of each request from a third party to authenticate a user. E.g. if I user my government ID to sign up for Facebook, that signup event will be logged.

Again, it depends on the implementation. The above two would almost certainly be collected in even the most privacy-respecting implementation. But, it's certainly possible to devise an implementation that enables the government to collect far more.

</comment></comment><comment><USER17> 'Estonia's approach makes life efficient: taxes take less than an hour to file, and refunds are paid within 48 hours.'

Exactly as happens when I pay my UK taxes online!

<comment><USER13> I can't understand if you're stating that UK taxes online take exactly the same time, or if you're satirizing it...

A textbook example of Poe's Law :)

[http://en.wikipedia.org/wiki/Poe's_law](http://en.wikipedia.org/wiki/Poe's_law)

<comment><USER18> Most people in the UK don't have to do a tax return, if you do have to do a tax return doing it online (at least if you have the relevant information handy) isn't difficult - probably takes me 30 minutes on a simple year and on a complex year I pay an accountant to do it.

<comment><USER19> Exactly, if our going to allow all of the hackable information to be stored online by your government so you can shave 20mins from a yearly task then your a fuc __*g idiot.

</comment></comment></comment></comment><comment><USER20> I like it. Its not as if U.S. states don't, as a practical matter, _require_ government issued identification.

I envision (I'm not the only one for sure) something like the Madison Project [1], _i.e._ , an online voting platform where people can discuss and vote on legislation, regulations, budgets, etc., in their jurisdiction (and submit edits and amendments), while _allowing_ anonymous or pseudo-anonymous participation and _allowing_ people to prove they're electors, political party members, etc., for users' filtering. So we can invest our time and energy in exhausting discussions with anonymous people, knowing they have a stake in the outcome and that we're not wasting our time on a discussion with someone who has absolutely no incentive to seek a successful solution.

This provides a missing piece. Only a government-issued digital ID can provide sufficient reliability and trustworthiness for such an application.

[1] [http://opengovfoundation.org/the-madison- project/](http://opengovfoundation.org/the-madison-project/)

</comment><comment><USER21> Without doing any other research this article seems like a total whitewash. It doesn't discuss _any_ existing or potential problems with such a scheme. The author isn't listed which makes me question whether they either know nothing about technology, privacy, or have conflicts of interest.

<comment><AUTHOR> The author is [https://en.wikipedia.org/wiki/Edward_Lucas_(journalist)](https://en.wikipedia.org/wiki/Edward_Lucas_\(journalist\))

<comment><USER22> Just out of interest, how do you know that?

I can't see any byline on the article.

</comment></comment></comment><comment><AUTHOR> Related: Estonia plans to create 10 million "e-Estonians" by 2025:

[http://estonianworld.com/technology/estonia-works-to- create-...](http://estonianworld.com/technology/estonia-works-to- create-10-million-e-estonians-by-2025/)

</comment><comment><USER23> I really REALLY hope this takes off at a EU level. And that the Estonians will reap some benefits by being the first to pave the way, so maybe some healthy competition on providing the best services to citizens will ensue between EU countries...

<comment><USER24> What is the major benefit of something like this? I can't think of a single transaction I've undertaken in the past few months (either online or offline) where it would have been to my advantage to authenticate my real name. I frequently need to authenticate an ongoing relationship (my gym membership, logging in to Amazon Prime), but in none of these situations does it matter _who_ I am, just that I'm the same person I was before. Generally those counterparties get that information anyway, but I consider that information leakage an artifact of the authentication process, not a beneficial feature of the system.

We already have solid methods for identifying ourselves as the same person as we used to be (various public keys, for example), and if we want to establish a consistent identity across multiple contexts/domains, we also have that option. This really doesn't benefit consumers in any way.

<comment><USER13> For government paperwork, it definitely helps to authenticate _who_ you are.

As long as you need to access government services, I'd rather have them be efficient.

My country has had national IDs for close to a century, and they make life a lot easier for databases and programming :)

<comment><USER25> _My country has had national IDs for close to a century, and they make life a lot easier for databases and programming_

Strange, from my perspective, this seems like a negative result.

</comment></comment></comment></comment><comment><USER26> On that note, I'll be in Tallinn for September and October 2014 as part of world travels. Any recommendations from locals or past travellers? I'm at [http://about.alexeymk.com](http://about.alexeymk.com)

<comment><AUTHOR> Check out [http://www.likealocalguide.com/tallinn](http://www.likealocalguide.com/tallinn) and drop by our startup co-working space [http://hub.garage48.org/](http://hub.garage48.org/) if you want to meet tech people.

<comment><USER26> Thanks! I will.

</comment></comment></comment><comment><USER27> It's useful to note that, while a country, Estonia's population is smaller than that of most large US cities (1.3mil). What can work for Estonia may not be something particularly portable to larger nation states. Still interesting stuff.

<comment><USER28> 1.3 million is a really tiny number. Why is it so small? The city of Tucson, Arizona has about 1 million people and it's in the middle of an uninhabitable desert.

</comment></comment><comment><USER29> For those in the UK for something similar, please see this: [http://epetitions.direct.gov.uk/petitions/66905](http://epetitions.direct.gov.uk/petitions/66905)

</comment><comment><USER30> Will those who decline to participate in this system be subject to criminal sanctions, or merely locked out of participation in public life.

<comment><USER31> Probably the second one. It will be hard for anyone to believe what your name is if the only thing you can present to back up your claim is piece of oficially looking plastic and all other people can present digital signature that can be verified online. You'll probably will be able to participate in activities that don't require trust in your identity. Buying a muffin, sure. Renting an apartment, no chance in hell.

<comment><USER19> Does renting an apartment require an ID? I don't think it's illegal if you don't! What's wrong with cash in hand every month?

<comment><USER32> In the UK, you are now legally required to check the immigration status of your tenants: [http://www.rics.org/uk/knowledge/news- insight/comment/landlo...](http://www.rics.org/uk/knowledge/news- insight/comment/landlords--agents-to-check-immigration-status-of-tenants/)

However, there isn't a national identity card scheme, so this will probably be messy.

<comment><USER19> Showing a drivers licence or passport is all you need, that's a valid ID card.

<comment><USER32> The person presenting a UK license or passport is the easy case. The person presenting a non-European passport and a pile of letters from the Home Office? Not so much. But then, discriminating against foreigners was the point of the law.

</comment></comment></comment></comment></comment></comment><comment><USER19> When you can use some one else's ID then the system fails, and just wait you will be able to steal some ones online identity.

</comment><comment><USER33> Creepy

</comment><comment><USER34> paywalled</comment>


Ask HN: Equity Splits - <AUTHOR>

First, I want to apologize for posting this under a new account - I am a regular and active HN participant, but just need some anonymity for this.
I've found two recent business school graduates (a top tier school like Sloan, Chicago, Harvard, Wharton, Stanford, etc.). They have an idea for a software/web startup and a lot of the business scaffolding in place (prestigious board of advisers, lawyers, industry contacts, etc). Neither one knows anything about code/computers though.
When I met them a few weeks ago, they had no code, no app, no users - but over the last few weekends I hacked together a quick and dirty prototype from scratch. They were impressed, and miraculously parlayed the prototype into a verbal funding offer (in the $1-2Mil pre-money valuation range). I did the prototype for them out of good will and the desire for experience.
Now, they have offered me a CTO position, with the condition that I will continue to work part time for the next few months until they are funded (they want to launch before raising capital, as they expect it will greatly raise the valuation). Once funded, they will hire me on as a full-time CTO with a salary. The vesting agreement will have me slowly gain equity as we hit technical/business milestones, and I should have an ~10% pre-dilution stake if all goes according to plan (they've put this all on paper and I'm having my lawyer go over it now, but it seems kosher at first glance).
On the one hand, I will be building their product from scratch, which makes me think I deserve more - but on the other hand they have a lot of strategic partnerships, etc. that I don't have. I expect this venture would never gain traction without their connections (one used to work in the industry and the other used to work at a major VC firm, plus they have several big-names as advisers).
Technically, I'm very interested. Their startup touches a lot of fields I'm interested in, and I have complete free-reign over technical decisions.
If it's relevant, I'm 23 with no college degree (in school part time now). I worked at a startup as an employee once before, and currently make a little over $100K/year at my day job (not a startup).
Their ideal exit would be an acquisition in the ~$100 million range (not entirely unprecedented) within about 5 years. After the two major rounds of funding they expect it would take to get us there, my equity would be diluted to ~3%. Realistically, I understand this is a long shot, and, more likely than not, my equity will be worthless. I do like the idea of being able to put 'CTO of ~$10M company at 24' on my resume though. I hope it would give me the experience and connections I need to start my own company a few years down the line.
Any thoughts? Is 10% completely too little equity for the work I'm doing? <comment><USER2> 10% isn't unreasonable for what you described. You'll learn a lot from them by being involved, it sounds like. And again, it's a long shot as with any startup.

My startup has offered 2% pre-dilution to a coder who will put ~200 hours into a project that already has about 800 hours on it. So he's putting in around 20% of the code. Dunno if that helps you, but that's what we're doing.</comment>


Keeping in touch with friends without social media is hard - <AUTHOR> https://saasbootstrap.com/keeping-in-touch-with-friends-without-social-media-is-hard/ <comment><USER2> The link to doveloop.com is dead.

<comment><AUTHOR> Shoot there might be something wrong with my DNS records. I just updated it in the post, thanks for the heads up!

<comment><USER2> Np, Working now :)</comment></comment></comment>


Popcount CPU instruction - <AUTHOR> https://vaibhavsagar.com/blog/2019/09/08/popcount/ <comment><USER2> .NET Core 3 (in preview, due out Sep 23) includes support for popcount as part of the BitOperations class: [https://docs.microsoft.com/en- us/dotnet/api/system.numerics....](https://docs.microsoft.com/en- us/dotnet/api/system.numerics.bitoperations). There's a recent post describing hardware intrinsics in .NET Core: [https://devblogs.microsoft.com/dotnet/hardware-intrinsics- in...](https://devblogs.microsoft.com/dotnet/hardware-intrinsics-in-net-core/)

There are a lot of potential use cases, but one of the early discussions was around quickly scanning for known HTTP headers. You can see that in use here: [https://github.com/aspnet/AspNetCore/blob/caa910ceeba5f2b2c0...](https://github.com/aspnet/AspNetCore/blob/caa910ceeba5f2b2c02c47a23ead0ca31caea6f0/src/Servers/Kestrel/shared/KnownHeaders.cs#L646)

If you really need help falling asleep, here's the discussion going back to 2015: [https://github.com/dotnet/corefx/issues/2209](https://github.com/dotnet/corefx/issues/2209)

Disclaimers: Microsoft employee, Nazgûl

<comment><USER3> GHC also includes a `popCount` function that is implemented in terms of the built-in instruction: [https://haskell-works.github.io/posts/2018-08-22-pdep- and-pe...](https://haskell-works.github.io/posts/2018-08-22-pdep-and-pext-bit- manipulation-functions.html#availability-on-ghc)

</comment></comment><comment><USER4> I used to use "implement popcount" as an interview question (for c programmers), I'm not super convinced that it was a good question, although it definitely tells you quite quickly how comfortable a candidate is with bit manipulation.

There are three or four reasonable ways to implement it in c, including one weird trick, but which is most efficient tends to be very CPU dependent (at the time I worked on a project that targeted four or five esoteric CPUs so I had the luxury of being able to verify this)

<comment><USER5> I remember in one interview I was asked to write a function that returns true iff x is a power of two, so I wrote return 1 == __builtin_popcount(x). They liked that.

<comment><USER6> I did the same thing!

But they didn't like it. So I wrote the naivest possible popcount and returned 1 == naive_bitcount(n).

They didn't like that. I explained to them that the compiler will optimize or the loop so this will be fast and that they should check it on godbolt. (did I mention that I was coding on the white board?) There's a loop in the source code, but there isn't a loop in the machine code, and it's like three instructions.

They didn't like that either, so I worked out the n & (n-1) method from first principals. I didn't do it optimally, there was some redundancy in my code, which the interviewer smugly explained to me. I can't remember if I told him "that's nice, but it's still an extra instruction compared to the trivial, obvious, easy to maintain method I showed you ten minutes ago." I'm pretty sure I didn't, too afraid to make a bad impression.

I didn't get the job. In hindsight, I'm glad I didn't. Those guys are dicks.

<comment><USER7> popcnt is generally going to take multiple cycles though, I'd expect the n&(n-1) method to be more performant. It's also vectorizeable and more portable.

<comment><USER8> builtin popcount when compiled for an architecture with hardware popcount should be 4 bytes per 1 cycle.

The n&(n-1) method to test for a power of 2 cannot be faster than that.

<comment><USER9> POPCNT has a latency of 3 cycles on most x86 hardware.

<comment><USER8> You are right. I was thinking of the number of operations.

Is the popcnt test slower than the n&(n-1) test? (Edit: Ooops! I see you already addressed that at [https://news.ycombinator.com/item?id=20918136](https://news.ycombinator.com/item?id=20918136) .)

<comment><USER9> A popcnt/test/jmp cycle should have roughly 4 cycles of latency: a test+jmp can be fused into one uop, and popcnt would be 3 cycles of latency. n&(n-1) == 0 would compile down into a DEC, TEST, JMP, which is 2 cycles of latency (again, test+jmp are fused into one uop), as dec is just 1 cycle of latency.

So n&(n-1) is faster for checking if it's a power of two.

<comment><USER8> In the following I confirm that n&(n-1) is faster than popcount (compiled with "cc -march=haswell check_pow2.c -O3"), at 699 vs. 1016 microseconds, respectively:

      #include <stdio.h>
      #include <stdlib.h>
      #include <sys/time.h>

      const int N = 2*1000*1000;

      int count_popcnt(unsigned int *data) {
        int sum = 0;
        int i;
        for (i=0; i<N; i+=8) {
          sum += (
                  (__builtin_popcount((data+i)[0]) == 1) +
                  (__builtin_popcount((data+i)[1]) == 1) +
                  (__builtin_popcount((data+i)[2]) == 1) +
                  (__builtin_popcount((data+i)[3]) == 1) +
                  (__builtin_popcount((data+i)[4]) == 1) +
                  (__builtin_popcount((data+i)[5]) == 1) +
                  (__builtin_popcount((data+i)[6]) == 1) +
                  (__builtin_popcount((data+i)[7]) == 1)
                  );
        }
        return sum;
      }

      int count_wegner(unsigned int *data) {
        int sum = 0;
        int i;
        for (i=0; i<N; i+=8) {
          sum += (
                  ((((data+i)[0]) & ((data+i)[0]-1)) == 0) +
                  ((((data+i)[1]) & ((data+i)[1]-1)) == 0) +
                  ((((data+i)[2]) & ((data+i)[2]-1)) == 0) +
                  ((((data+i)[3]) & ((data+i)[3]-1)) == 0) +
                  ((((data+i)[4]) & ((data+i)[4]-1)) == 0) +
                  ((((data+i)[5]) & ((data+i)[5]-1)) == 0) +
                  ((((data+i)[6]) & ((data+i)[6]-1)) == 0) +
                  ((((data+i)[7]) & ((data+i)[7]-1)) == 0)
                  );
        }
        return sum;
      }

      int main(void) {
        unsigned int data[N];
        FILE *f = fopen("/dev/urandom", "rb");
        if (!f) {
          perror("Cannot open /dev/urandom");
          exit(1);
        }
        if (fread(data, sizeof(unsigned int), N, f) != N) {
          perror("Cannot read enough items");
          exit(1);
        }
        /* Use only a few bits */
        for (int i=0; i<N; i++) {
          data[i] = data[i] & 31;
          /* Don't worry about handling 0 */
          if (data[i] == 0) {
            data[i] = i + 1;
          }
        }

        struct timeval time1, time2;
        int n;

        gettimeofday(&time1, NULL);
        n = count_popcnt(data);
        gettimeofday(&time2, NULL);

        printf(" popcnt: %d in %8ld us\n",
               n,
               (time2.tv_sec-time1.tv_sec) * 1000*1000 +
               (time2.tv_usec-time1.tv_usec));

        gettimeofday(&time1, NULL);
        n = count_wegner(data);
        gettimeofday(&time2, NULL);

        printf("n&(n-1): %d in %8ld us\n",
               n,
               (time2.tv_sec-time1.tv_sec) * 1000*1000 +
               (time2.tv_usec-time1.tv_usec));

        return 0;
      }

Thank you for teaching me something new!

<comment><USER10> Besides just timing it (excellent!) did you take a look at what it compiles to?

[https://godbolt.org/z/C0ZeE5](https://godbolt.org/z/C0ZeE5)

It's faster because both GCC and Clang now optimize loops with n&(n-1) to use AVX2 SIMD! I haven't looked closely to confirm, but I think they may in fact even do Harley-Seal for "naive popcount" loops.

C is no longer portable assembly. If you want to test whether a particular algorithm is faster than another, you probably need to write assembly --- or at least confirm that the compiler did what you thought it did.

<comment><USER8> I think I'll stick with paying people like you to deal with these sorts of issues in my code. ;)

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER11> One way popcount is useful not mentioned in the OP is in the graph analysis. For example, you can use the following

std::bitset<N>* graph = new std::bitset<N> [N];

to store the adjacency matrix for a graph with up to N vertices in N^2 bits of memory. The nice thing is that std::bitset::count uses popcount to compute the number of bits set to one. This makes some graph operations extremely fast even for a pretty large N. For example, graph[i].count() will produce a degree of a vertex and (graph[i] & graph[j]).count() will produce a number of vertices adjacent to both i and j.

<comment><USER12> Careful, std::bitset.count() doesn't use popcnt on msvc, only gcc and clang.

<comment><USER13> Popcount was not supported on the original AMD64 ISA. You have to tell your compiler to generate code for a recent chip before it will generate the instruction.

<comment><USER12> That still doesn't work. Here is an example with codegen for AVX2, and an intrinsic call to popcnt, that still doesn't use popcnt for std::bitset.count() with a bitset size of 32 bits. Compare it to the GCC generated code.

[https://godbolt.org/z/27TmQY](https://godbolt.org/z/27TmQY)

<comment><USER13> I guess you're talking about MSVC. I find it hard to care much what that does. Code where performance matters much is not built with it.

But you're right, their std lib not using their own intrinsic is pathetic.

<comment><USER12> Sometimes we don't have a choice of toolchain used due to distribution targets or other dependencies :-( I'd prefer to be using GCC / Clang for everything too...

<comment><USER13> I wrote to a maintainer of the MSVC lib. He says their lib has to work on all amd64s, but some (specifically, AMD before K10, and Intel before SSSE3) have no popcount. He says their intrinsics are defined to emit exactly the instruction named, unlike Gcc's, so they can't use that in their library.

No explanation why they use the loop form, except that the code hasn't been touched in a long, long time.

<comment><USER12> Surely they can check if AVX is enabled and use the intrinsic if so?

<comment><USER13> That would involve changing code not touched since before AVX or even SSSE3 existed. Probably not even since before amd64 existed.

But it's hard to switch on use of a single instruction. Checking at the use site consumes a branch predictor slot. Switching in a function pointer interferes with inlining. Self-modifying code would have been the old way. The modern way might be rewriting in the linker or loader, or JIT compiling.

I have discovered that compilers are extremely bad at recognizing hand-coded byte-order swapping and dropping in movbe or bswap instructions. That Gcc and Clang recognized ham-handed pop counting loops seems miraculous now.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER13> The Bitmanip extension definition document for RISC-V explains a wide variety of what were, for me, unfamiliar but terribly useful bitwise operations. Well worth reading even if you have no particular interest in RISC-V. Many of the instructions detailed have analogs in AVX, NEON, and recent POWER instruction sets. Often these instructions are poorly explained in the official manuals.

</comment><comment><USER14> MMIX has a "SADD" instruction, which does popcount(x&~y). (You could use this to count trailing zeros with two instructions, each taking only one clock cycle.)

I thought JavaScript ought to have a built-in popcount function for the new integer type, but last I checked, it doesn't have. (It would be faster than writing JavaScript code to emulate it.) (I can think of uses for popcount on arbitrary length integers. Of course this won't work with negative numbers (I don't care what it does if the input is negative, although they should define what it does in that case), but for nonnegative numbers would be good to have.)

I have also used the __builtin_popcount function in GNU C. I did not know that it can detect an implementation of popcount and replace it; I have just used the built-in function.

I also did not know of all of the uses mentioned in the linked document (but I did know of some other uses).

<comment><USER15> WASM has ctz and it's honestly the better place for such a low level instruction. BigInt is getting some of the bitwise ops ([https://github.com/tc39/proposal- bigint/blob/master/ADVANCED...](https://github.com/tc39/proposal- bigint/blob/master/ADVANCED.md)) but just the higher level ones at this time.

JavaScript does have clz32 from back before WASM was the new target for compile-system-language-to-browser but not ctz32 and I doubt it'd be added as that's no longer the focus.

</comment></comment><comment><USER16> I like popcount for converting a 2^N-bit uniformly-distributed random number into a N-bit binomially-distributed one. Each bit of the input simulates a random coin flip.

<comment><USER17> You are a wasting a lot of random bits this way, don't you?

<comment><USER18> Not if you already have 2^n bits at hand. In fact, if you have 2^n bits of entropy, popcount is probably more efficient than generating n more bits randomly.

</comment></comment></comment><comment><USER19> It's also an instruction in WebAssembly, which has a pretty sparse instruction set. There are only 29 integer operations, and this is one of them. There are also "clz" and "ctz" which count leading and trailing zeroes. Other than that all the instructions are run-of-the-mill arithmetic, comparison, bitmasking and shifting.

</comment><comment><USER20> The fact that GCC and Clang can identify a manual implementation of count- bits-set and substitute it with an invocation of popcount is fascinating. What other idioms of similar or higher complexity can these compilers recognize and convert to instructions?

<comment><USER21> I about fell out of my chair when I saw gcc and clang both turn (u>>s)|(u<<(32-s)) into a single "rorl" (rotate right logical) instruction.

<comment><USER13> Even pcc (on version 7 pdp-11 unix) knew that one.

</comment></comment></comment><comment><USER22> For whatever it's worth, this article is a good example of why HN's (only theoretical, by now) policy of keeping the original headline intact makes sense. I wouldn't have clicked on an article with the title "You Won't Believe This One Weird CPU Instruction!", and I would not feel regret.

<comment><USER23> > For whatever it's worth, this article is a good example of why HN's (only > theoretical, by now) policy of keeping the original headline intact makes > sense.

Did you mean _doesn 't_ make sense?

</comment></comment><comment><USER24> There is more! You can be _faster_ than __builtin_popcount()!

Wojciech Muła did an excellent SSSE3 implementation:

[http://0x80.pl/articles/sse-popcount.html](http://0x80.pl/articles/sse- popcount.html)

My understanding is that the set-up time is slower than the POPCNT cpu instruction, but throughput is higher. Useful if you need to count bits not on a register, but on a whole array.

<comment><USER8> It looks the conclusion is that the POPCNT instruction ("cpu") is faster than any of the SSE implementations. Only AVX2 outperforms POPCNT, and only for large enough bitstrings.

<comment><USER24> On i7:

> AVX2 code is faster than the dedicated instruction for input size 512 bytes > and larger

The difference is indeed tiny. Still - it's very cool the generic AVX2 code can beat the instruction burned in the silicon!

</comment></comment></comment><comment><USER25> Yikes I remember reading that thread on usenet. John Nagle, Rob Warnock and Roger Shepherd. Good times. Roger oddly didn't mention the story about guys in black suits and mirrored sunglasses showing up as the reason the T414 lacked popcount but the T800 added it.

</comment><comment><USER26> Popcount is also very valuable in search (bitmap) indexes, for example roaring bitmap by Lemire uses it quite a bit.

<comment><USER27> Though, interestingly, if AVX2 is available then Lemire's CRoaring package uses a Harley-Seal popcount implementation, at [https://github.com/RoaringBitmap/CRoaring/blob/master/includ...](https://github.com/RoaringBitmap/CRoaring/blob/master/include/roaring/bitset_util.h#L286) , rather than the POPCNT64 instruction.

Because it's faster - [https://arxiv.org/abs/1611.07612](https://arxiv.org/abs/1611.07612) .

<comment><USER28> From the arxiv pdf: "We disabled Turbo Boost and set the processor to run at its highest clock speed" for their comparison.

Doesn't their setup bias towards the AVX2 solution?

<comment><USER8> For what it's worth, I've tested my AVX2 copy of their code on a couple of different machines, and found it faster than my POPCNT-based implementation. (See my comments elsewhere here.)

Here's my laptop numbers for my benchmark:

      2048 Tanimoto (RDKit Morgan radius=2) 1000 queries
      chemfp search using threshold Tanimoto arena, index, single threaded (popcnt_128_128)
        threshold T=0.4 popcnt 19.33 ms/query  (T2: 19.81 ms check: 189655.09 run-time: 39.2 s) (allow specialized)
      chemfp search using threshold Tanimoto arena, index, single threaded (avx2_256)
        threshold T=0.4 avx2 12.63 ms/query  (T2: 14.04 ms check: 189655.09 run-time: 26.7 s) (allow specialized)

That's 19.33 ms/query on 2048-bit (256 byte) bitstrings using POPCNT unrolled to two loops of 128 bytes each, and 12.63 ms/query using AVX2 specialized for 256 bytes.

My testing showed there was no advantage for a fully unrolled POPCNT implementation. One thing to know is that there is only one execution port for POPCNT on my Intel processor. An AMD processor with 4 execution ports (Ryzen, I think?) may be faster. I don't have that processor, and my limited understanding of the gcc-generated assembly suggests it isn't optimized for that case.

<comment><USER28> > An AMD processor with 4 execution ports (Ryzen, I think?) may be faster.

FYI m0zg agreed: "AMD can retire 4 (!) popcounts per cycle per core, if your code is able to feed it": [https://news.ycombinator.com/item?id=20916023](https://news.ycombinator.com/item?id=20916023)

</comment></comment></comment></comment></comment><comment><USER29> Be aware though that Intel POPCNT instruction throughput is pretty low by today's standards. When you need to popcount a lot of bits, on Intel it might make sense to do it without the use of POPCNT. This oldie but goodie still holds, on Intel: [https://danluu.com/assembly- intrinsics/](https://danluu.com/assembly-intrinsics/)

In contrast, AMD can retire 4 (!) popcounts per cycle per core, if your code is able to feed it.

There's vectorized popcount in some of the optional AVX512 instruction sets, but for those to make it into consumer CPUs AMD would really have to hurt Intel pretty bad, marketshare-wise. :-)

</comment><comment><USER30> We used a "popcount" style operation + bitwise AND to determine how similar two people were by interest. We had a bitmap where each bit represented an interest and 1 meant they had that interest and 0 meant they did not. Bitwise AND filters out the non overlapping interests and popcount to measure the "intensity" of their similarity (to tease out people who had almost every or almost no interests selected matching others like that — bell curve kind of thing).

<comment><USER31> generally, popcnt is useful to implement the Jaccard Distance [1]:

        J(X,Y) = |X∩Y| / |X∪Y|

So, implementing the sets X and Y as bitsets it becomes:

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

        J(X,Y) = popcnt(X&Y) / popcnt(X|Y)

<comment><USER8> If anyone needs that to go fast, for fixed-length (up to ~4k bits) try out my code, chemfp at [http://chemfp.com/](http://chemfp.com/) . It's designed for cheminformatics, but can work with any data set which can be described by a fixed-length byte string and an identifier.

</comment></comment></comment><comment><USER32> [https://haskell-works.github.io/posts/2018-08-22-pdep-and- pe...](https://haskell-works.github.io/posts/2018-08-22-pdep-and-pext-bit- manipulation-functions.html) from the series [https://haskell- works.github.io/](https://haskell-works.github.io/) shows how to use popcnt (and rank-select) in a Haskell CSV parser

</comment><comment><USER33> The same computer architect who first told me about popcount's desirability to the NSA also believed that the massive simultaneous multithreading first introduced to the HPC world commercially by Tera—now owner of the "Cray" name—was also a big win for the spooks.

</comment><comment><USER34> Revisiting POPCOUNT Operations in CPUs/GPUs [https://homes.cs.washington.edu/~cdel/papers/spost106s1-pape...](https://homes.cs.washington.edu/~cdel/papers/spost106s1-paper.pdf)

</comment><comment><USER35> The coolest part of this for me is that compilers can optimize this stuff out and replace it with the machine instructions.

I know that optimizing compilers do some amazing things, but detecting this particular case is pretty cool.

<comment><USER36> I highly recommend Matt Godbolt's talk "What has my compiler done for me lately?"[0] and its follow-up[1]. Both are great presentations going into details on some of the crazy optimizations compilers will do. As someone who knows very little about the inner workings of compilers my mind was blown when I saw some them.

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

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

<comment><USER35> Fantastic. Adding to my watch list.

</comment></comment></comment><comment><USER37> If you're building a binary tree incrementally, comparing the length of your stack of partially completed subtrees to the popcnt of the number of leaves so far tells you how many subtrees you need to merge :)

</comment><comment><USER38> The Popcount instruction seems to be a meme on hacker news. You're cool if know about it and cooler if you've used it. That aside, this article is a good one for applications of it.

<comment><USER13> Knowing when to use bitmap representation, ops, and popcount is a kind of superpower. When it is the right thing, it makes your program 10x faster.

<comment><USER39> Thus can be said about almost all CPU instructions. x64 has tons of SIMD intrinics. You can do absolutely crazy stuff with them if you are willing to invest the time.

<comment><USER13> True enough, but bitmaps are very easy to use portably, with just &, |, ~, ^, and ++ operations. The only exotic needed very frequently is popcount, but you get that portably from std::bitset (except, evidently, in MSVC).

The compilers are perfectly happy to keep an unsigned and a bitset variable in the same register, so that assigning from one to the other is a no-op.

</comment></comment></comment></comment><comment><USER13> It's kind of pathetic that the RISC-V core instruction set lacks popcount.

Besides all its immediate uses, it is essential to a fast integer logarithm.

<comment><USER40> It is part of the Bit Manipulation extension. So is count leading zeros. Unfortunately it is still in draft.

The math extensions are not in draft.

<comment><USER13> Being in an extension means you can't count on it being there.

<comment><USER41> That's a feature (for hardware designers) not a bug.

RISC V is not really designed to be a good high performance oriented ISA. They're aimed square at the embedded market.

<comment><USER13> It's a feature for hardware designers working with 250 nm transistors.

Modern designers working with modern processes have the problem of discovering what they can throw a million transistors at that will actually make real programs faster. Hint: bitmanips!

</comment></comment></comment></comment></comment><comment><USER42> Popcount comes up in chess engine programming, where boards are regularly represented as a series of bits for each type of piece. The Chess Programming Wiki has a lot of information about both usage and implementation:

[https://www.chessprogramming.org/Population_Count](https://www.chessprogramming.org/Population_Count)

</comment><comment><USER43> I think the most probable reason for this instruction is for calculating parity bits. This would need to be done fast so it makes sense that there would be a CPU instruction to do most of the work.

<comment><USER44> Parity is much easier than counting. It's so easy that you get it for free in the x86 flags register. (… and because the 8008 was designed to run a terminal.)

<comment><USER45> >"(… and because the 8008 was designed to run a terminal.)"

Could you elaborate on this? How does the 8008 being designed to run a terminal relate to the parity and the flags register?

<comment><USER44> Each iteration from the 8080 through x64 have a parity bit in the flags register for backwards compatibility with the previous generation. The 8008 was a microprocessor implementation of the Datapoint 2200 architecture.

<comment><USER45> Excellent, thanks for the insights. Cheers.

</comment></comment></comment></comment></comment><comment><USER46> I've used _BitScanReverse (popcount-ish MSVC intrinsic) with a custom octree indexing scheme, where higher level voxels have more unset bits from the left. Neat stuff.

</comment><comment><USER47> MySQl includes a native popcount instruction, Postgres didn't when I checked a few years back. I actually needed it at the time.

<comment><USER48> It's surprisingly easy to implement a popcount user defined function in C for postgres. It would be a problem for hosted postgres with extension restrictions though.

</comment></comment><comment><USER49> Power ISA has it too. I'm hard pressed to think of a modern architecture that _doesn 't_ have it.

<comment><USER50> I don't think ARM does, but there might be some NEON thing that you can use to do something equivalent.

<comment><USER3> ARM NEON includes it as VCNT: [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc....](http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0489h/CIHCFDBJ.html)

<comment><USER50> Huh, it looks like that only works on 1-byte values? That's an interesting choice.

<comment><USER29> Worse, it's a fertile ground for "interesting" bugs, because VADDV (which sum- reduces the result) reduces into an 8 bit uint. So if you e.g. accumulate two or more quadword VCNTs into a uint8x16_t and then VADDV it, you could end up with something other than the actual overall bit count (because 2 quadwords can have _256_ bits set). Same with accumulating 8 or more VADDVs, except now individual bytes could wrap around if you don't widen in between.

</comment></comment></comment></comment></comment><comment><USER51> I've used this in an effort to calculate hamming distances of encoded equal length strings of dna.

</comment><comment><USER52> Popcount is not at all unusual in ordinary bit-twiddling.

</comment><comment><USER53> popcount reminds me of my first Map-Reduce program. It seems that I "reduced" by popcounting.

</comment><comment><USER54> Peculiar name. I would have named that "bitsum".

<comment><USER8> The original name was "sideways addition". There are many other names, including Hamming weight. The Wikipedia entry for Hamming weight says the HP-16C developers agree with you:

> Some programmable scientific pocket calculators feature special commands to > calculate the number of set bits, e.g. #B on the HP-16C[3][17] and WP > 43S,[18][19] #BITS[20][21] or BITSUM[22][23] on HP-16C emulators, and nBITS > on the WP 34S.[24][25]</comment></comment>


Calculator (Wikipedia) - <AUTHOR> https://en.wikipedia.org/wiki/Calculator <comment><AUTHOR> Commented on an HN thread about Texas Instruments today. Made me think about calculators, googled the word, saw Wikipedia article. Long and somewhat interesting, so posting.</comment>


JavaScript is the future, and why it matters - <AUTHOR> http://tinychimp.com/?p=39

<comment><USER2> I agree.</comment>


High-Level CPU Challenge - <AUTHOR> http://www.yosefk.com/blog/the-high-level-cpu-challenge.html

<comment><USER2> Please make the Link directly to the website</comment>


Why wouldn't Mint.com / other personal finance apps come to Asia? - <AUTHOR>

I have been waiting for someone like Mint.com to come to Asia (I reside in Singapore), and am frustrated with their complete ignorance of the market.
Recently I realized that its because Yodlee (which powers Mint.com's data) doesn't have any presence / connections with banks in Asia.
Now, I know that Yodlee uses things like screen scraping / OFX etc to connect with the bank's data. My question is - how do they overcome security issues like second factor authentication etc?
Also, if we had to cut a deal with a bank for access to their data through OFX - who should we be speaking to?
any guidance on this will be hugely helpful. thanks. <comment><USER2> Register paypal account, get account at mint, add your paypal as your primary bank. Voila, you can use mint in Asia.</comment>


How to Store Light and Understand the Laser Principle - m-app https://www.rp-photonics.com/spotlight_2015_11_28.html <comment><AUTHOR> Wonderful site! Includes a comprehensive open-access encyclopedia of photonics and links to suppliers.

As to the actual question of storing light, article admits the impracticality of any sort of "box o' mirrors" approach. Although truthfully it would make a fun experiment. I think nature provides a much more elegant solution in the form of crystals that can absorb and re-emit photons when excited, of which modern tech has made ample use thereof.</comment>


$100k ARR Milestone - <AUTHOR> ConveyThis hit $100,000 ARR last week! It's a huge milestone for us

    Launched just under 2 years ago
    Fully bootstrapped, no money raised
    Fully inhouse
    No outbound sales
    Team of 3
 I'll probably write a blog post about it so let me know if there's something specific you'd want to hear about. <comment><USER2> The [https://www.conveythis.com/](https://www.conveythis.com/) website says "12 Years in Business". So... 2 or 12 ?

</comment><comment><USER3> I'd be interested to hear what the growth curve looked like.

</comment><comment><USER4> What where the first steps. The first 30 hours interests me the most. I'm sure you had other ideas to work on, why this one?

</comment><comment><USER5> Congrats on the milestone</comment>


Unity 8 for Ubuntu 15.04 Is Showing Great Progress - <AUTHOR> http://news.softpedia.com/news/Unity-8-for-Ubuntu-15-04-Is-Showing-Great-Progress-467414.shtml

<comment><USER2> I'll be really interested to see where this goes. Canonical cop a lot of flack for their direction, but you've got to at least agree that they've got an ambitious plan and they're going for it. I like that!</comment>


Ask YC: Status of your startup - <AUTHOR>

Hi!  Want to get some conversations going here.  How's your startup doing right now?
Any planned launch dates?
What's your startup anyway?
We're quite busy with ours, we were ready to release a beta, but choose to redesign and refactor things again. What about yours? <comment><USER2> I launched <http://openphotovr.org> (virtual reality from photos) very quietly yesterday night. A non-profit, my midnight oil hobby project. After two months of development I feel it's time to go online, maybe get some visitors. No rush. Already see glaring mistakes in the UI :-)

<comment><USER3> LOVE IT! ( _reminds me of the Photosynth demo @ Ted Talks_ )

<comment><USER2> Yes, Photosynth was the inspiration, but I managed to avoid the stages of image analysis and 3D reconstruction =)

The main problem right now is non-intuitive interface. It's hard to predict where the camera will go when you click. Working on it.

</comment></comment></comment><comment><USER4> We are doing online backup and storage. We have an open source project (<http://allmydata.org>) that we are building a commercial product (<http://allmydata.com>) on top of. We have a fair amount of beta users (10K) and have our new architecture beta release due out mid-February. We will then be fixing any major issues, testing usability, and then going full release.

We've had good feedback from our users which has helped shape our usability and also which features were important to them (like having ftp access for example).

Hope this helps, Peter

<comment><AUTHOR> Hey Peter, how did you promote your beta to get to 10k users?

Appreciate your sharing.

<comment><USER5> _"... how did you promote your beta to get to 10k users? ..."_

Firstly reliable data backup is a real problem. Anything that can help solve this for users is going to attract attention. Writing your own backup script that reliably backs up your data with RSync and remote servers for example is doable but wastes time and effort. Secondly you can download the software, try it out, change it. But most consumers are not developers and are not interested in playing with software and hardware themselves so they look for a company that provides the service.

So the key bits here are

\- Solving a users problem

\- Show don't tell.

\- Provide a service that users can use if they don't do it themselves.

\- Have something that will continually attract new users (articles, software, discussion, etc)

The technical bits make for a good read and can be found here ~ [http://allmydata.org/source/tahoe/trunk/docs/architecture.tx...](http://allmydata.org/source/tahoe/trunk/docs/architecture.txt)

<comment><AUTHOR> that's really good insight, thank you.

</comment></comment></comment></comment><comment><USER6> I have been toiling away for what seems like ages on a source code review app, aimed at helping cube dwellers who can code sort out some of the horrible outsourced code they have to review (something I have to do in my cube too often, and was frustrated with the tools out there to do it).

Its just a part time thing for me these days (still stuck in my cube), but I hope to get a beta release out there in a month or so. Things that are making me nervous/holding me back:

* Can't come up with a decent name for thing!

* While I don't think my app is ugly, its certainly not anywhere near as shiny as many of the other web 2.0 apps out there

* I keep tweaking and adding features instead of polishing what is there and getting the beta finished.

I am pretty pleased with what I have go so far, so at the least I will have learned Rails and created a tool I can use in my current day job.

<comment><USER7> > Can't come up with a decent name for thing!

"Turd Polisher" ? :-)

</comment></comment><comment><USER8> I'm building a hosted load testing solution at the moment. There's a little more to it, but that's the idea. I'm close to where I thought I'd be--I need about another month to get it really going and a month or so after to tune and iterate.

<http://testomatix.com>

My solution will require no hardware, be based on an open source tool people might already be using and be ridiculously easy to use if I hit my mark. I'd like to make it self service too.

<comment><AUTHOR> That's pretty cool. Can you let me know when you launch? I might use it

<comment><USER8> Thanks and absolutely. Can you shoot me your email? I'm 'ebeland' on gmail.

<comment><USER8> A few people have emailed me already, which is great! For the sake of saying so more directly, anyone who is interested in trying out testomatix when it launches can email me at ebeland at gmail.com.

</comment></comment></comment></comment><comment><USER9> We just launched seekler.com on January 7th. Seekler is a collection of community-built lists that make it really fast and easy to find new stuff like movies, music, etc.

We had some good early traffic (from a few great links to one of our lists), but unfortunately things have slowed down a lot in the past few weeks. We think the basic concept is great, but we're wondering if the UI is keeping people from really digging into our content. We're going to probably release a slightly tweaked interface on Monday. And, as always, we're always looking for feedback on how we could make Seekler better.

<comment><USER10> I took a look at Seekler again, and I'm a little confused on who your audience is.

The home page appears to be a generic destination, as in, "if you want lists of stuff, we've got 'em" But, I don't think people just want lists of "stuff", they want lists of a few things that are relevant to them.

For example, I may be a movie buff who's very excited about the 2008 anticipated movie list, but charities, books, and comic books are of no use to me. It seems that it'd be better to offer the data on your site targeted to the respective niche audiences that they serve in an easily consumable way (FB App, Blog widget, etc), rather than expecting that there are people who just crave information because it's in a list format.

I'm generally a design snob, but I think your UI is fine for the stage you're at (though it sort of reminds me of a domain landing page). My advice is to refine what the value you're actually adding is, and then find ways to appropriately serve those people looking for your utility.

<comment><USER9> Good question regarding our audience. We don't really intend to make Seekler a place you would visit every day (as you noticed, we have quite a few gaps in our content, so for any niche, you'll probably only find a few lists that interest you right now) - instead, we're trying to make it resource, more like Wikipedia, but for opinions. The idea is that if you're looking for something in particular niche, you'll start your search on Seekler. Our goal is save you time - instead of spending 20-30 minutes finding your next movie, book, whatever, we can make that 5 minutes or so.

Of course, until we get a lot more data, people won't really start their search at Seekler. But we're starting to show up pretty high on Google results for a number of our lists, so we are trying to get our initial traffic that way.

Your point about the widget and FB is interesting. We have a widget that is being tested and we're strongly considering building a FB app to play up the social angle. For instance, right now the 'Best Movies' list merges the lists of all users - would it be interesting to see a list created from just the lists of your FB friends?

Thanks for the questions and feedback. We're learning something new every day...

<comment><USER10> I get that you're becoming a warehouse of categorical "opinion-based" data, but the trick seems like it's going to be how that data can be accessed once it's stored. Lists of things my friends like, seems it'd be more useful than getting a list of what random strangers like.

I think there's a lot more you can do in that direction, and I encourage you to look into it :]

<comment><USER9> Awesome, thanks for the advice. This is pretty much our biggest question right now (whether or not to go for the social angle and implement a facebook app), so I appreciate the feedback.

</comment></comment></comment></comment></comment><comment><USER11> I've got a startup that brings college bulletin boards online for students to buy and sell their used textbooks. It's eBay meets Craiglist for college textbooks. Check out our alpha project at cocunderground.com (COC is for college of the canyons, the school that this project is directed at). All feedback is welcome!

<comment><USER12> a prominently-featured search bar would help find textbooks, vs. filling out every detail in a form

<comment><USER11> Thanks! The search form doesn't require every field, but if that's not obvious, I should make sure to make it obvious. I suppose I could also put a simple Section>Course # search field on a side bar. "Quick Search"

</comment></comment></comment><comment><USER13> We launched <http://bug.gd> in late 2007 as a way for everyone to search and capture solutions to error messages. Happily, it was covered on TechCrunch, Digg, Mashable, etc. Exciting stuff. We recently created a full Firefox extension that makes it even more natural. <http://bug.gd/download>

bug.gd plans to drive its revenue through corporate intranet sales of our software and P2P helpdesk solutions. The public-facing error database is expected to always be free and ad-free as a consequence.

Interesting primarily to places like YC, we're about to announce our <http://featurelist.org> which is really just a tool we use for our feature tracking and thought we'd open it up to the world. It's a free little Reddit- inspired site for startups and open source projects to let their community vote on features. Anyone can host a project there and have users visit <http://featurelist.org/MYPROJECT> to request/vote on features. This will probably go public beta in a couple of weeks, but it's really just a gift back to the community more than anything we want to make $$$ with.

Very, very busy lately. Back to work. :)

</comment><comment><USER14> We've just launched our social news site for women, with a focus on fashion, beauty, and celebrity gossip. That means lots of pretty photos!

Initial users seem to like it so far :)

<http://www.prettysocial.net/>

<comment><USER15> The site doesn't look so good if the user's default background color is not white because the logo has a white background. You should use something like .

On the other hand, probably less than 1% of users have a custom default background color...

<comment><USER14> Thanks for the tip! I haven't seen a grey background in a while... except in webalizer :)

</comment></comment></comment><comment><USER16> We have select users now and plan to open up the private beta in about 3 weeks - our deadline as we have a presentation that day. We've been coding for a year now, and we're excited to be on the verge of finally raising the curtain. :) <http://streamfocus.com>

<comment><AUTHOR> yes I remember you :) lmk when you launch

</comment></comment><comment><USER17> I'm working on a web-based MMO. We're about 75% through the game logic, artwork requirements is going out to the art studio in the next week.

We should hit our beta milestone at the end of March.

</comment><comment><USER18> My startup (<http://www.HubSpot.com>) launched its product in November, 2007. It's a web hosted solution for inbound marketing for small businesses.

Revenues are growing steadily. The team is 26 people (22 in Cambridge, MA) and we're getting deeper into search engine algorithms, Facebook apps for business and English text analysis.

Challenge right now is making sure the system will scale as we continue to grow our customers/usage. High quality problem.

</comment><comment><USER19> We've been hacking away building the technology for our startup since late last fall. We're finally close to launch time (end Feb hopefully). We're more focused on getting a product launched as quickly as possible and then letting our community have it's say re: what works and doesnt work.

Development took longer than I hoped, but we used our blog to really spread the word and get the 'movement' started in the meantime.

We're NewsCred, a digital newspaper that brings you news based on credibility from your favorite sources. Unlike Digg, which uses popularity, our primary criterion is quality/credibility. Plus we're an online newspaper, not a social news site. Whats the difference? Hopefully you'll be able to see for yourself soon!

Loved reading everyone else's ideas. Let me know what you guys think! <http://www.newscred.com>

</comment><comment><USER20> how about answering your own questions first!

<comment><AUTHOR> We're really excited to launch. We kept pushing dates back, as there is just more work than expected. We're working on a complete ondemand solution. So instead of signing up for project management, crm, invoicing separately, we'll provide an all in one solution. Plus it's a platform, so it's extensible. We're working to go into private beta this month.

<comment><USER20> i already upmodded the thread before making the comment, so it wasnt meant to be hostile, if it felt like that.

pre-launch phase for a startup its very exciting time. Hopefully you will keep up your work with the same mood right after launching, and won't get dissapointed by the attack of anyone or non-immediate massive response of your application.

for everyone else, i think its interesting to pariticipate in commenting other startups as it helps them kept focused also in their starup efforts, so i suppose we wil hear from you again here.

<comment><AUTHOR> Oh it's all good. :)

It is exciting. We're pretty committed. We're good with a low key response first, while we're a semi public beta phase.

Appreciate the comments, for sure you'll hear back from me. :)

</comment></comment></comment></comment><comment><USER21> Interesting to see the things people are doing.

A few months ago, 2 of my friends from college and I came up with an idea for allowing people to create polls online and give them tools to look at the results in more detail. Only problem was none of us knew anything about web programming and design. We learnt a lot from reading forums, through w3schools and other websites. After more than 6 months of tinkering and working pretty much on weekends (2 of us work as bankers), we came up with PollBag (www.pollbag.com). Its probably a bit amateur but would love to know what you think. We are always looking to get constructive feedback.

</comment><comment><USER22> 1\. its going ok but its just me at the moment and its self funded, I am working 50/50 client work and startup work at the moment.

2\. first product very soon, just need to do the final tweak and get some beta testing done to make sure its easy to use and hard to break :p

3\. small simple web apps, I plan to release more than 1 app under my companies brand.

4\. I just did a redesign of the first app and am happy with the look now. I am also working on tech demos for other products in my portfolio.

Next week I should release my first app.

</comment><comment> a-priori My startup's going fine so far. Tech side's coming along (slower than I'd like of course), but the business side's going crazy.

We're aiming for a beta in the spring. I wish I could say what it is, but we're all hush-hush now (can't even say what it's called right now). Maybe in a few months :)

On a side-note, I'm looking for a programmer, particularly with for UI and design stuff. Let me know if you or someone you know may be interested.

</comment><comment><USER23> <http://redsultan.com>

Amazon Mechanical Turk competitor in the works (it also happens to be my senior thesis).

<comment><AUTHOR> Give us some more info :) Sounds interesting

</comment></comment><comment><USER24> Launching major site next week. You can hold me to that. Will be awesome site that you'll all want to use. Not sure if I'll do it under this alias.

</comment><comment><USER25> I plan on launching an initial version of my site in March. I started full time in December, and gave myself 3 months to have something out the door. Im pretty well on track. I initally cut some things that were in the original design, to make sure 3 months would do it. That was probably the hardest part of the whole thing - determining at the beginning what to leave out.

</comment><comment><USER26> Mine is Photoree, the collaborative image recommendation system ( <http://www.photoree.com> ). Just got reviewed by KillerStartups [http://www.killerstartups.com/Video-Music- Photo/Photoreecom-...](http://www.killerstartups.com/Video-Music- Photo/Photoreecom---A-Photo-Recommendation-Service/)

</comment><comment><USER27> Rolling along with about 25 new users per day. Getting ready to launch the first round of user-requested and pre-planned features. So far it has been a lot of fun! My main problem is I built the site to scratch an itch and now that it exists I use it myself so much I don't work on features enough.

</comment><comment><USER28> Threw out something as fast possible to credibly sell our product, we've made some sales, and now we're going back and fixing everything / adding infrastructure & features.

We also secured a small seed round of funding ---enough to last us a few months.

<comment><AUTHOR> What's your startup?

How do you deal with the loss of flexibility once launching? You really can't make big architectural changes after launching in some cases. I.e., when were you confident enough that it was a good time to launch?

<comment><USER28> This isn't the place to discuss the business itself, but our product isn't software. We simply conduct business over the internet.

So, for example, instead of writing/installing/debugging a shopping cart, we just posted Google Checkout buttons. Instead of creating a database backend for orders, we have the form submit to email. Instead of creating the most beautiful website with the best copy, we made something that looked OK and populated it with some basic content.

</comment></comment></comment><comment><USER29> I actually just started the registration phase of my company. But I already have a few products near beta stage. Right now the company is 100% funded out of my wallet, making living very hard. I might have to take out a loan to pay for the server expenses.

</comment><comment><USER30> we just launched <http://www.cellspin.net/> at the DEMO conference (<http://www.demo.com>). it is a service that provides easy to use mobile software for you to send your media from your phone to your favorite websites (flickr, facebook, youtube, etc). we also have a website where you can manage the content you have uploaded and keep track of what your friends have been posting. check it out and let me what you think (ian [at] cellspinsoft [dot] com). we're always looking for new sites to add as destinations. please give me any feedback you have! i'd love to hear from you guys.

</comment><comment><USER31> Slowly whittling away at an online accounting suite for small businesses. Stubbed out the underpinnings, and just did the first major design iteration. Should show it to the first potential users in a month or two.

<comment><USER11> Is this something designed to replace Quickbooks entirely? Something like this would be nice for my situation. I can't run quickbooks from Ubuntu, and I don't like booting into Windows whenever I need to do anything.

<comment><USER32> Try GNUCash? It's not bad.

<comment><USER11> Yes I've used it, and it is pretty good. The problem is I need a platform independent application... Or a dedicated windows computer to replace the other partition on my notebook's hard drive.

<comment><USER32> Yeah... I can't say I've tried it, but I think you can get older versions of Quickbooks working in WINE. And there is always a virtual machine.

There's also a number of web based accounting software, like the online version of Quickbooks, NetSuite, and Intacct.

</comment></comment></comment></comment></comment><comment><USER33> Built the system, but then we realized we were hitting a common demographic. Went back to the drawing board and begun to rewrite it. We're close to private beta.

<comment><AUTHOR> What are you guys doing? Even just roughly.

</comment></comment><comment><USER34> Dead.

I need someone who knows his way around Photoshop, CSS, and visual design, and I don't have a couple years to drop everything and go learn that.

<comment> daniel-cussen Dude, it's nothing you can't learn in a few weeks, or maybe even one week. Get GIMP, read a tutorial, fool around with it for a while, and try online tutorials on how to make a web 2.0 button, say. That might take one, two days tops.

CSS isn't rocket science either. It's a variant of html (sort of) where you choose stuff like font and background color (style, I guess) in one master document that all the other web pages refer to. It's like the Slide Master in powerpoint. It has slightly different punctuation than html, but it's not that special. It's just an easier system, and it's probably overhyped by design bloggers.

Visual design: there's all kinds of "7 mistakes begginers make" type articles in hacker news. Some are better than others. Just use common sense, good taste, effort, and knowledge.

That should get you acquainted with all three problem areas. In fact, after a few weeks one can design clones of homepages of Yahoo, Google, YC, delicious, facebook, and so on. Of course, I don't know what level of mastery you're talking about, and there's definitely a lot of fancy things you can do with photoshop that take a lot of knowledge, but the kind of design chops one needs to do a startup aren't that hard to get.

<comment><USER11> GIMP is good, there's no doubt, but I've found that 90% of the graphical development for my project can be done in about an hour on Inkscape.

<comment><USER6> Good call on Inkscape - I have been looking for a decent Photoshop type app to run on OSX for ages. Finally got my next and back arrows drawn without starting up the windows box!

</comment></comment></comment></comment><comment><USER35> It's in my head. Waiting for school to be done.

</comment><comment><USER36> you should release the beta. Then you'll at least have user feedback for the redesign.

<comment><AUTHOR> The redesign is really a user interface design, not looks. We'll confuse users too much if we completely change the whole thing on them. But we're close to launching anyway.

</comment></comment><comment><USER37> one month away from launch. improved messaging system

<comment><AUTHOR> can you go into more specifics? just so I get it

<comment><USER37> maybe email is really boring</comment></comment></comment>


Native Netflix support coming to Linux - <AUTHOR> http://www.themukt.com/2014/09/19/native-netflix-ubuntu-linux/ <comment><USER2> This is huge for linux adoption. The major hurdle holding many people, including myself, back from using linux as an HTPC operating system is netflix support. This will be especially great if plugin developers can get it running through XBMC.

<comment><USER3> It works in Chrome-beta, just pipe that to XBMC and run it fullscreen?

Gotta change user-agent too, but I think that was already mentioned in the article. Html5 Netflix, been working since August.

<comment><USER4> how does one "pipe' chrome into xbmc?

</comment></comment></comment><comment><USER5> Great news!</comment>