Manjaro Blames GlobalSign for SSL Cert expiry after not receiving "extension" - <AUTHOR> http://manjaro.github.io/expired_SSL_certificate_update/ <comment><USER2> "Free SSL Certificates for Open Source Projects" [https://www.globalsign.com/en/ssl/ssl-open- source/](https://www.globalsign.com/en/ssl/ssl-open-source/)

</comment><comment><USER3> What does he mean by "extension"? How can you extend validity of an SSL certificate? Or is that the point, he's just making stuff up?

<comment><USER4> You do not ask for an extension of an SSL certificate, but you get a new one signed with another expiry date.

I think it is theoretically possible to change the expiration date, and ask a certification authority to sign that new certificate, but I have never heard of that happening anyways.

</comment></comment><comment><USER5> Have the addressed the way they handled the issue, rather than the issue itself? It's one thing to have an expired certificate, but it's another to advise people to turn their clocks back to get around the issue...

<comment><AUTHOR> They have now "renewed" the certificate. However it seems they believed GlobalSign would issue an "extension".

<comment><USER6> I read it differently; they thought they could negotiate a renewal free of charge or at a discount and didn't have a plan B.

</comment></comment></comment><comment><USER7> Here's another story from manjaro last week: [https://manjaro.github.io/expired_SSL_certificate/](https://manjaro.github.io/expired_SSL_certificate/)

They have suggested users to adjust their computer time a couple of days before the expiration to use the site.

They should really start reading about how the SSL works.

<comment><USER8> I'm getting really tired of seeing them raked over the coals for having the audacity to even suggest the "time change" work-around. If I remember right (it has been edited, sadly), changing your time was given as the last possible work around in a list of 4-5, and was marked as a "last resort" and not really a great idea.

I think the amount of reaction this story has gotten over the last week is completely attributed to click-bait headlines that quote that out of context, by people who only read said headline. This is _not_ worth crucifying these people over.

<comment><AUTHOR> It was originally the only workaround offered

[https://twitter.com/servertastic/status/586113649766494208](https://twitter.com/servertastic/status/586113649766494208)</comment></comment></comment>


Skype can use your public data as advertising - <AUTHOR> https://www.microsoft.com/en-us/servicesagreement#2_yourContent <comment><USER2> Isnt that written there pretty much since Skype is Microsoft?</comment>


False inference in fMRI:  clarifications from the authors of the PNAS paper - <AUTHOR> http://blogs.warwick.ac.uk/nichols/entry/bibliometrics_of_cluster/ <comment><USER2> Related: [https://news.ycombinator.com/item?id=12032269](https://news.ycombinator.com/item?id=12032269)</comment>


German as a natural barrier to entry - <AUTHOR> http://www.blagspot.net/2012/04/german-as-a-natural-barrier-to-entry/

<comment><USER2> I don't buy that argument. Sure, German isn't the easiest language, and most Germans aren't willing to use a English-only service.

Still, there's enough translators and copywriters available, never mind that anything big enough will probably have a local support team anyway. And the market seems big enough to justify that investment. If that argument would fly, is France any better off? About 4 times as many high school students learning it, roughly comparable market…

And I'd need to see actual evidence for the "attention to detail" argument. Germans are prone to be portrayed as perfectionists, now apparently for consumption, too. Little of that is true (well, at least more true than for Americans). After all, Germans are buying MS Windows, too…

So in my opinion, the added localization effort and the fictitious "cultural divide" aren't the true reasons for the copycats gaining ground. It's mostly a lack of focus on foreign markets in the first place. The US is a huge market, and by the time most companies try to expand their horizon in a serious manner, a ripoff has its chance and will make some money. Still, their staying power is pretty limited, especially if the original has a certain "brand". I remember everyon inviting me to "StudiVZ", the blatant Facebook clone. Nowadays I'm not even sure if that's still around…

<comment><AUTHOR> The article was intentionally simplified and while I think you raise valid points it is interesting how few US firms have actually entered the market. If they did, it usually took quite a long time or happened through an acquisition, which incentivises start-ups to use existing concepts. I think US firms should enter Germany earlier and leverage the talent that is already available. At the same time I would like to see more investors seed-fund German entrepreneurs to foster true innovation (after all for example mp3 comes from Germany).

<comment><USER2> Don't most of the big companies have German offerings? It's mostly the startups in their initial stages that don't move abroad (at all, not just Germany). And a lot of that is due to legal and financial issues. We probably need a few startups in the internationalization sector to alleviate that.

I don't see anything specific against moving business into Germany, it's just that right now Germany has some pretty bad copycats, which makes this an issue.

Following the blog post, I'd expect to see companies moving to Spain or France before Germany, and I didn't really notice this as a pattern. It's not moving out of the US at all that's the problem (any Canadians want to chime in?).

And yes, a more lively startup community in Germany (and Europe in general) would be great.

</comment></comment></comment><comment><USER3> How is German a particularly difficult language? It's relatively simple and very similar to English - some things are more complicated, some are simpler, but as mhd says it's a moot point due to local translation skills, etc.

I think he's on the right track actually - in Australia it's a similar scene, whereby local 'copycats' get in first and steal the market share, simply because the US companies are focusing on their local market first.

In some cases they have consolidated their position and are still the market leader despite the US originator moving into the Australian market (e.g. Scoopon vs Groupon) but in other cases the US company destroyed the local one (e.g. eBay, which had quite a battle on their hands to win the auction market here, but eventually prevailed - I can't even remember who the other people were now!)

Also I'm not even sure there's really a significant 'cultural divide' between Germany and the US anyway. US culture flourishes there.</comment>


Introducing chibitronics (sticker circuits by Bunnie Huang) - <AUTHOR> http://www.bunniestudios.com/blog/?p=3477&ref=hn

<comment><AUTHOR> The crowdsourcing campaign was on the frontpage the other day. Bunnie Huang (famed XBox hacker) is part of this project. This page is explains the project's rationalization, history, and engineering -- mad cool.</comment>


Visualize your Git Contributions - <AUTHOR> http://scoreci.com <comment><USER2> First alarm signs: no address, no privacy policy, passwords submitted plain text.

Additionally there is no reason to sign up because the website doesn't tell what it does. Why would it need my first and last name for example?</comment>


Ask HN: Who used tech to enjoy their wedding more? - <AUTHOR> Could be planning phase (project management) or information (static website) or invites (dynamic website) or gifts (wedding registry/stripe) or any other wonderful ways that tech could help out on the wedding day itself :-D <comment><USER2> Maybe how about just enjoying the good time with your partner and family?

I've got married almost 3 years ago and didn't do anything apart from getting a company to do my party. No fb groups or anything, no regrets, it was perfect.

We also wrote a lot of stuff offline and talked about how we wanted it, but all the planning software and so on that exists makes me think that people are doing a lot of useless stuff.

We didn't even film it, had a photo session where like 2-3 pictures in the end we cared about. There's a lot of bullshit in the industry and it all makes it either more expensive or less special.

My mother and father filmed it, I believe that they've watched it like twice and whenever they tried to show me I just slept, it's boring as fuck and it's only very emotional, nice and cool when you are actually in the moment, at the time, with yourself. All the rest is just bullshit, it's about showing people on fb that you are married and so on, which is something I don't feel so comfortable to share because it's very personal.

I bet couples and people are different, but if I had to bikeshed even the color of the plants on the table or my wife did, it probably meant that we don't like each other that much. We just enjoyed the time and had a very nice moment together, from when we decided to marry, to the party and after.

Now as I'm getting older, I'm having my younger friends getting married and asking me this kind of stuff, but when I really dig them, some of them are getting married just so they don't split up... really... dunno. Hard to say.

</comment><comment><USER3> I should have asked this question on HN b/c I just got married 2 weeks ago! We hired a wedding planner but my wife and I used the following "tech":

\- [https://www.greenvelope.com](https://www.greenvelope.com) \- we wanted to get the word out fast so we used electronic save the dates and wedding invitations

\- PayPal - different vendors accepted different payment methods so we used PayPal to manage most of it

\- Google Spreadsheets - we listed out table seating, meal options, gifts and more and shared with our wedding planner and other family members

\- [https://soundwaveprosdj.com](https://soundwaveprosdj.com) \- this is our DJ's site which allowed us to find and select specific songs. For example, I selected a string quartet version of Guns and Roses Sweet Child of Mine when walking down the isle

\- Yelp - that's how we found our wedding planner and my tuxedo shop

\- YouTube - we live-streamed our wedding ceremony: [https://www.youtube.com/watch?v=s6p9OA33E8M](https://www.youtube.com/watch?v=s6p9OA33E8M)

\- Marriott - we did a wedding room block at the Marriott but in order for guests to book a room online, they sent us a link where the dates and pricing were exposed in plain-text as query string parameters. Sure enough if you changed one of these param values, the web page would show it!

</comment><comment><USER4> Yes, there's a ton to be done in this space. To my understanding it's almost exclusively owned by theknot on the planning and zola/similar on registry. Both are pretty poor quality imo, but they work.

In addition, also advertising has a lot of potential, it's very heavily under utilized, and it's pretty easy to predict. So if you build a great product, it should be very cheap to bring it in front of many people.

</comment><comment><USER5> Oh man, planning my wedding was a lot of stress. The only thing I could think of to make it even more stressful? Adding JIRA to the mix.

</comment><comment><USER6> \- Google questionnaire and spreadsheet for food options. \- Laptop plus usb cables/audio cables for peoples music collections instead of a DJ (gotta trust you're friends taste though).

Never use unproven tech for a mission critical deliverable :)

</comment><comment><USER7> They're so amazingly complex the only thing I can think would help is an experienced impartial wedding planner OR a dead simple wedding.

</comment><comment><USER8> see [http://www.weddingwoo.com/](http://www.weddingwoo.com/)

social media is a big part of the wedding experience today too. People will criticize it in that it takes people out of the present, but it does let people share and memorialize the experience.</comment>


Creating a ZFS zroot Raid 10 on Ubuntu 16.04 - <AUTHOR> https://weitzj.github.io/article/creating-a-zfs-zroot-raid-10-on-ubuntu-16.04/ <comment><USER2> After the announcement that Ubuntu 16.04 would _support_ (not just contain) ZFS, I was quite happy. I have a FreeNAS server at home and while FreeBSD is awesome for basically all server-y parts of the server, FreeNAS is still based on FreeBSD 9 and I would love to replace with a Linux-based system so I can also use at as a build server and run some Linux-speicific tools.

But getting Ubuntu _installed_ on a ZFS partition turned out to be much more painful than expected -- you can't easily do it by booting the server ISO from a USB drive. Maybe I'll have some more time soon and try this again.

<comment><USER3> I'm curious how much that's really an issue? I hear, constantly, people talking about 40TB homelabs they built on individual ZFS drives to store .. whatever.

Your OS a couple of gigabyte, and existing filesystems have a long, long history of serving them perfectly fine. Why not install your OS and then make yourself huge /home or whatever and mount that?

<comment><USER2> Because it's a hobby and I don't have to compromise on this? :)

Also, I want to backup my system the same way I backup the rest -- with ZFS snapshots and send/receive. (Also, I really want to try using docker with ZFS on this machine.)

</comment></comment></comment><comment><USER4> That was a lot of steps. Not practical yet.</comment>


What Every Startup Can Learn From AirBnB - <AUTHOR> http://gigaom.com/2011/02/22/airbnb/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+OmMalik+%28GigaOM%3A+Tech%29&utm_content=Google+Reader <comment><USER2> I'm the only one who thinks AirBnB business practices are shady?

To adverise netto price and hide their free until the very end and then smack it to the total just before you book is fucking disgrace, it's unethical, shady and disgusting business practice. Airlines did that all the time and everybody hated that, officials, at least in EU, needed to intervene and to force those bastards to advertise full price only and now some nice startups think that those cheating techniques from past are good to go?

<comment><USER3> Oh man _some_ consumers behave like spoiled brats... the word "bastards" is extremely unwarranted. These airbnb folks are putting a massively useful service up and airlines put some serious heavyweights up in the air 1000s of times per day. These facilitators' rewards are miniscule compared to the benefit and achievement their customers enjoy. It should be 100% up to them and only them how they present fees and pricings for their business offering which they created painstakingly in _any_ event. Even before some EU bureaucrats "intervened and forced these bastards" there was good competition among european no-frills airlines that also resulted in some (airberlin I'm sure, easyjet at some point tooI think) proudly proclaiming how they do show the _full_ price, including all fees charges taxes. This simply has to be good enough for customers and they better know their place. If you think airbnb is doing it wrong, you have a massive opportunity at hand. If you think this is not enough differentiation to win big against airbnb, that just proves customers do not _really_ care about that particular aspect. They just like to complain sometimes about minor annoyances equivalent to a mosquito sting, and unfortunately some as you think an initial, quite possibly unfounded expectation was not fulfilled is a reason to keep an ever-growing cancer such as an EU alive. You lose more in ever-growing tax payments overall and in the long run than through (some) web site's or airlines' "shady" practices.

This is such a non-issue. You ALWAYS, everywhere see a TOTAL price before check-out and can still fully cancel by simply doing nothing (ie. not clicking check-out). And you prefer officials whose only activity is stifling other activity, who produce nothing but regulate those that do.

I can see that the days of an innocent, pioneering, unregulated internet of a million colors and 10s of big and millions of small innovations and sure enough just as much silliness -- are soon numbered if this kind of mind-set makes it to Hacker News and gets 5 upvotes. :/

Vent over.

<comment><USER4> I agree those words were a bit harsh, but come on. All he said is that it is a little shady to hide the total until you've "fallen" for a place. I love Airbnb and use it all the time, but I wish they were a little more transparent with their pricing.

Not to say this is unique. California hotels never disclose the 16% hotel tax until you swipe your card.

A lot of European countries have laws that make companies advertise real prices to make it easier for the consumer to pick the best value. Keeps businesses honest. How is that a bad thing?

</comment></comment></comment><comment><USER5> <http://www.airbnb.com/help/topic/traveling#> _On top of the booking price of a listing, any deposit, tax, or cleaning fee should be listed in the description or details section of the listing -- so you can view them there. You may also message the host directly to ask about any additional fees. You should also remember that Airbnb charges a service fee of 6-12% which will be made clear on the checkout page_

For comparison: <http://www.ticketmaster.com/h/help.html>

</comment><comment><USER6> I think this is a great interview and story. Regardless of what you think of AirBnB (I happen to love the product and prefer it over booking "normal" hotels where possible), the story of AirBnB's evolution and their contrary nature to SV hype is awesome.

</comment><comment><USER7> Airbnb is great! not just the perseverance mentioned in the article, but also the attention to design.

It is interesting to note that unlike some other startups in the valley, Airbnb was from the beginning was working to build and support their community and not just expect it to come together on it's own.

</comment><comment><USER8> what other verticals is airbnb entering?

<comment><USER9> Going to make a wild guess and say push a focus on vacation rental homes. It's a huge market and the big player is a big slow dinosaur if there ever was one.</comment></comment>


CIA new nominee director Gina Haspel ran a torture site and destroyed evidence - <AUTHOR> https://qz.com/1227879/who-is-gina-haspel-the-first-woman-nominated-to-run-the-cia-destroyed-evidence-of-us-torture/ <comment><USER2> The inevitable result of illegal activity going unpunished: normalization.

The Obama administration had eight years to do something about this and instead decided turn the other way. All we got was a mealy-mouthed admission that "we tortured some folks."

<comment><USER3> It's impressive that we've fallen so low that we're blaming the Obama administration for not fixing what the Bush administration did. I see it as normalization of the concept that you can't expect any rational action whatsoever from the GOP anymore.

Edit: Reading from comments, I should clarify. I totally agree with OP, I just find it incredibly sad.

<comment><USER4> Obama authorized 10x the number of drone strikes as Bush that killed over 391+ civilians while he was in office, and he did it on his own volition. Ultimately any president has to make hard life-altering decisions, so lets cut out the left vs. right nonsense.

Go ahead, read the article, don't let the facts hit you on the way out.

[https://www.nytimes.com/roomfordebate/2016/01/12/reflecting-...](https://www.nytimes.com/roomfordebate/2016/01/12/reflecting- on-obamas-presidency/obamas-embrace-of-drone-strikes-will-be-a-lasting-legacy)

<comment><USER5> Obama is also I think one of very few presidents who explicitly targeted and killed American natural born citizen. Not accidentally, but actually targeted. Didn't even bother hiding it.

But I agree with the original point, GOP did start this mess on the lie of weapons of mass destruction.

<comment><USER6> Well you go back to 911 itself and the government involvement with Osama Bin Laden going back to the 1980s, go back to the CIA making my childhood incredibly dangerous by dumping incredible amounts of guns and drugs into cities such as Los Angeles. When do the American people get to tell the CIA "you're fired!"

<comment><USER5> Those were massive fups.

That is very different from listing the name of an American on a "kill list" and ordering a drone strike. Judge, jury and executioner.

[https://en.m.wikipedia.org/wiki/Anwar_al- Awlaki](https://en.m.wikipedia.org/wiki/Anwar_al-Awlaki)

</comment></comment></comment></comment></comment></comment><comment><USER7> "In 2002, she oversaw a secret prison in Thailand that tortured two terrorism suspects. That torture took place within the CIA's "extraordinary rendition" program, in which suspected terrorists are sent to US allies, and interrogated in "black sites" on their soil.

One of the men, known as Abu Zubayda, was waterboarded 83 times in one month and was slammed into walls by the head. He was deprived of sleep and kept in a coffin-like box. Interrogators later decided he didn't have any useful information.

ProPublica found that Haspel personally signed cables to CIA headquarters that detailed Zubayda's interrogation.

CIA videos of the torture were destroyed in 2005, on the orders of a cable drafted by Haspel. Her then-boss Jose Rodriguez, the CIA's director of operations for counterterrorism, signed off on the order. "The cable left nothing to chance. It even told them how to get rid of the tapes," he wrote in his memoir, according to ProPublica. "They were to use an industrial-strength shredder to do the deed.""

<comment><USER8> The Washington Post is a much better source than Quartz on this. Abu Zubayda did produce much useful information but it was apparently before the "enhanced interrogation techniques."

</comment></comment><comment><USER9> >He was reportedly persuaded by defense secretary Jim Mattis that the method is an ineffective intelligence tool.

I'm glad that there are still people with some common sense and who hold positions of power in the US defense/security apparatus.

<comment><USER10> Although it's unfortunate that the argument against torture is not that it is barbaric and inhumane, but that it is merely ineffective.

<comment><USER11> exactly this!

</comment></comment></comment><comment><USER12> So, basically she's fully qualified to lead the CIA?

</comment><comment><USER13> Geeze, Eisenhower and JFK really weren't kidding when they warned about this.

We need a modern human rights movement that respects all people in the world. This isn't just a one-party problem, the Obama Targeted Killing Doc proves it spans across both political parties(1). It is also fundamentally antithetical to being American.

[https://www.motherjones.com/politics/2013/02/obama- targeted-...](https://www.motherjones.com/politics/2013/02/obama-targeted- killing-white-paper-drone-strikes/)

</comment><comment><USER5> Welcome to the American security state

[https://www.washingtonpost.com/news/powerpost/paloma/daily-2...](https://www.washingtonpost.com/news/powerpost/paloma/daily-202/2017/10/18/daily-202-ex- cia-officers-running-for-congress-as-democrats/59e6b25b30fb041a74e75de5/)

Entire government is run by shady people. Even tech boards of companies like Dropbox have Secretary Rice on them.

<comment><USER14> Good info

</comment></comment><comment><USER10> Why has this thread been flagged?

<comment><USER15> Users flagged it, presumably because they don't think it fits the site guidelines at [https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html).

<comment><USER10> Wouldn't that normally come with the ability to "vouch"? But I saw no "vouch" button for this one.

<comment><USER16> Vouch works only on [dead] submissions and comments. The counter to [flagged] (as opposed to [flagged][dead]) is upvote.

<comment><USER10> Got it, thanks.

</comment></comment></comment></comment></comment><comment><USER14> CIA creates more terrorists than it purportedly defuses by seeding deep resentment in people through the CIA's actions (torture being one of them).

<comment><USER17> Torture gives our enemies moral high ground.

</comment></comment><comment><USER18> Trump nominates torturer to lead CIA, HN erupts with anti-Obama comments...

<comment><USER19> I'm frankly more taken aback by both how

1\. Comments regarding how pervasive bad operators are throughout our govt. are flagged and downvoted to the bottom of the thread, even when they're the most relevant to HN with respect to governmental participants on tech/startup boards.

2\. That despite such a high score and comment volume, for what I'd say is a rather important topic, this thread is already flagged to page 3 and below.

The entire handling of this thread, for the weight I'd give the topic, has saddened me.

I'll try and make an HN-contributive point with regards to the OP out of this meta-complaint in observing that while there's a lot of finger pointing and blame in this thread, I don't see enough asking "Ok, so _now what_." How do we push back against the normalization of torture? As observed elsewhere, govt. employees who had a hand in some of this now hold positions within our companies. Is it feasible/desirable to take a social role in making them unwelcome there? This is certainly the path I'll be trying, for as little influence as I have in my business dealings.

<comment><USER20> My other comment on this page got 11 points in 6 minutes. But since then, every time I refresh the page my comment shows up as 'compressed' (as if it had been flagged), and it has been been on 11 points every time I've checked (now an hour old).

Weird shit happening here for sure.

<comment><USER19> To echo a sentiment I posted in another thread.

"I don't mean to 'complain about points' but it's rather absurd to look at the wild swings from +8 to -8 and back again for any of my posts on this topic. It speaks to me that there are at least two 'factions' with very polarizing opinions on this, and the context has turned less from discussion into silencing vs vouching. I certainly don't remember seeing these patterns as strongly 5+ years ago."

I've become increasingly unhappy with the quality of discourse over the last few years, especially on these "fringe" topics. It's doubly sad because I haven't found comparably good levels of discussion that HN sometimes generates, but for these other topics. (Ignoring the additional sadness that I fear by sticking our heads in the sand about anything that smells like politics we're in for a "Very fun" next few decades, I've historically been a strong advocate that to draw a hard line in the sand between "this is tech" and "this is politics" is to abscond a lot of responsibility _every_ expert community should have for the political space they operate in)

</comment></comment></comment></comment><comment><USER21> Relatedly, 1/4 of Democratic candidates this cycle are affiliates of the national security state.

[https://www.wsws.org/en/articles/2018/03/07/dems-m07.html](https://www.wsws.org/en/articles/2018/03/07/dems-m07.html)

<comment><USER5> I gave a much more neutral source below.

<comment><USER21> Jeff Bezos' blog is hardly neutral and it does not appear they did the original research, but regardless, thanks for laundering the analysis through legacy media.</comment></comment></comment>


California DMV Is Selling Drivers' Data to Private Investigators - <AUTHOR> https://www.vice.com/en_us/article/dyzeza/california-dmv-data-private-investigators <comment><USER2> >The California DMV told Motherboard "the DMV does not sell information, but recovers the cost of providing information as allowed by law."

This comment seems like a lie, or at the least sly misdirection. According to this article the DMV is making 50M a year and openly admits that they redirect profits to other initiatives, they're not just "recovering the cost".

It's like saying, "I'm a software engineer, I sit at home and recoup the cost of sitting at my computer all day."

<comment><USER3> Really? This seems like a pretty clear explanation to me.

They are required by law to provide information. That's not selling... that's just complying with their obligation to provide certain data.

And they charge a fee for it.

In other words, if you want to prevent them from providing information, _you need to change the laws requiring they share information_.

<comment><USER4> Sort of?

Is Amazon not "selling" retail products because they aren't really making a profit on it? In fact, they aren't always even recouping their full cost of selling products, those losses are offset by other revenue streams like aws.

</comment></comment></comment><comment><USER5> The saddest part of all this is that the California DMV is making only $50m/yr — that's literally about $1/yr for each Californian, a little more if you only count driving-age residents, and probably less if you count cars, not people — at what cost?

Stalkers, murders, debt collectors, etc., lives made easier / possible?

A sad state of affairs.

<comment><USER6> The data is not sold to the public. You must be a private investigator, lawyer, debt collector or other limited party. The data is used mainly to find people and enforce their legal obligations. It's been going on for many years and is widely known. I'm surprised this is a story.

<comment><USER7> In theory it is not sold to the public. In practice, it isn't hard for motivated members of the public to figure out how to get access.

I personally know someone who was a victim of stalking back in the 90s. Her stalker managed to find out where she lived by getting it from the California DMV. The only way she found to block it was to move and have her car owned by someone else so that there would be no DMV record.

The result is that while this is not new, it really should be a story.

<comment><USER8> It's also not that hard to get the information from other sources too.

If your scenario happened in the 90s, it might have been before the DPPA law took effect.

The author has a clear bias and is using an event that took place before the protections were in place to further their agenda.

<comment><USER7> It would have been before DPPA.

However social engineers have no problem getting information. And private investigators are easy for anyone to hire. I doubt that the DPPA will slow a dedicated stalker much.

</comment></comment></comment></comment></comment><comment><USER9> California also takes a mandatory blood sample at birth and they sell it to research firms.

<comment><USER10> Citation needed.

<comment><USER11> Have had 2 kids in CA. Can confirm[1]. They even write you a pathetic "don't go" letter when you file the paperwork to destroy the records. They allow all sorts of organizations to use the data[2].

[1] [https://www.cdph.ca.gov/Programs/CFH/DGDS/Pages/nbs/default....](https://www.cdph.ca.gov/Programs/CFH/DGDS/Pages/nbs/default.aspx)

[2] [https://sanfrancisco.cbslocal.com/2015/11/09/dna-data- from-c...](https://sanfrancisco.cbslocal.com/2015/11/09/dna-data-from- california-newborn-blood-samples-stored-sold-to-3rd-parties/)

</comment></comment></comment><comment><USER12> The CA Secretary of State also sells voter information, per California Elections Code section 2194(3). The cost is $1 per thousand records, up to $30 (unclear if that's for the whole state, or if you can't request more than 30k records).

The information is only supposed to be used for political, scholarly, or journalistic purposes. There doesn't seem to be a way to opt out.

<comment><USER13> > (a) Except as provided in Section 2194.1 , the affidavit of voter > registration information identified in Section 6254.4 of the Government Code > :

> (3) Shall be provided with respect to any voter, subject to the provisions > of Sections 2166 , 2166.5 , 2166.7 , and 2188 , to any candidate for > federal, state, or local office, to any committee for or against any > initiative or referendum measure for which legal publication is made, and to > any person for election, scholarly, journalistic, or political purposes, or > for governmental purposes, as determined by the Secretary of State.

</comment></comment><comment><USER14> I briefly worked at a Canadian company which had access to yearly data from hundreds of US counties (including DMV and voter data). The company makes software for parts of the US government. I think we had records on >10 million US citizens. Different counties would vary based on how much data they would give, but many would include things like SSN and license plate (including counties in California). I had free access to all this data, no password even needed.

IIRC we never dealt with the DMV directly. The parts of the government we worked with would send us the DMV and voting data. So even if you somehow get the DMV to stop selling your data, other parts of the government will probably keep giving it away to companies. We weren't using the data for anything nefarious, but I'm sure there are many other less-trustworthy companies with access to the same data.

</comment><comment><USER15> Earlier related articles:

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

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

</comment><comment><USER16> Interesting... One would expect such things to be happening in some heavy republican we-love-business state, but not in democratic California?

<comment><USER17> California, especially southern California, is not the leftist stronghold Fox News wants you to believe it is. Some politicians are better than others, but the democratic party is firmly neoliberal, pro-big-business, and generally reactionary. See _California Über Alles_ by the Dead Kennedys.

</comment></comment><comment><USER18> Everything about you is public, whether you like it or not. Until legal rights to own your own data exist it will be freely bought and sold to the highest/lowest bidder. It isn't how things should be, but it is how they are for now.

<comment><USER19> You should specify "in the US". In other parts of the world there are a few restraints (e.g. Germany).

</comment></comment><comment><USER20> Are there _any_ states which do not sell or turn over DMV or voter information for a fee or subject to FOIA/Sunshine Law requests? Seems to me a very easy way to fix this issue is to define in law that personally identifiable information belongs to the person and not the state and that nobody not involved in the act of voting (poll workers) or issuing DMV documents can access the information without a search warrant signed by a judge.

</comment><comment><USER21> Why does this story keep recurring? Oh right -- rage-clicks are good revenue.

This isn't news, and it isn't specific to CA. All 50 states sell DMV data. I don't know about other states, but for CA it is required by law.

</comment><comment><USER22> Is this the first time a US Gov't org was caught selling data to the private sector?

Does anyone have another/earlier example?

<comment><USER23> _> Is this the first time a US Gov't org was caught selling data to the private sector?_

The DMV is not being caught selling data; the DMV is legally required to sell this data.

</comment></comment><comment><USER24> This is impossible to stop, there are private companies that collect road side camera data and combine it with cell phone GPS coordinates to figure out the same information. If you own a home your address is apart of public record, if you collect a paycheck anyone get run a background check on you and get the same information.

We should just stop the illusion of privacy, your data isn't private. It may have never been private.

</comment><comment><USER25> Don't most DMVs do this?

<comment><USER13> If so then that is a bigger story, not less of one.

<comment><USER25> I mean, maybe, but it's not news.

<comment><USER13> News doesn't just mean new stuff. It is new information to people. If people don't know about it, it is news. Maybe not new to you, but congrats? I'm not sure what that solves.

</comment></comment></comment></comment><comment><USER26> DMV needs to be outsourced to the auto insurers who earn off of applications. This way we don't end up with 1 location for an entire city.

<comment><USER27> Arizona has "authorized 3rd party" providers who can do 90% what the DMV does. They charge a "convenience fee" but is totally worth it since there is never a line and they are all over the place. It seems to strike a good balance between private/public operations.

[https://azdot.gov/motor-vehicles/mvd-hours-and- locations/aut...](https://azdot.gov/motor-vehicles/mvd-hours-and- locations/authorized-third-party-providers)

<comment><USER28> Same thing in California. I've been doing my DMV business at AAA for more than a decade.

<comment><USER29> Is this really a good thing? We're empowering a whole slew of companies to "compete" in an arena simply by the virtue of government's dysfunctional and incompetent services?

What this does is punishes people who cannot pay convenience fees (how much or how little that is orthogonal) and rewards people who can.

This is an extremely sad state of affairs where privatization of something that government is _supposed_ to provide with reasonable quality and timely manner.

This is why our country is compared to third world. Because of shit like this.

<comment><USER30> I perform DMV functions at my local AAA office because it's more convenient for me. I also think the DMV should provide better service. The two aren't exclusive goals.</comment></comment></comment></comment></comment>


Message-Oriented Programming (2017) - <AUTHOR> https://www.joeforshaw.com/blog/message-oriented-programming <comment><USER2> I have developed a somewhat similar system for Python / C / C++.

I declare my data structures in YAML. From this I generate code for memory allocation; data validation; serialization and de-serialisation routines.

I also declare the topology of the data flow graph in a separate YAML file, decorating each edge with the data type.

Finally, I have a separate YAML file that specifies which computers/processes each node will run on.

Nodes communicate by passing messages. For nodes in the same process, this is simply shared memory (zero overhead). For nodes in different processes that share a memory bus, this is a shared memory queue. For nodes on different machines, the data goes over the network.

Nodes can be python, C or C++.

Very nice. Very declarative. The bare minimum of duplication and boilerplate. Changing from MIL to SIL to HIL is (mostly) just a configuration change. Logging, measurement and replay is built into the framework, as is support for parameter tuning.

Within a single process, the model of computation is synchronous data flow. Across processes, it is asynchronous data flow, but because we have queues with blocking reads and nonblocking writes, we still keep the ability to replay data through the system in a deterministic manner. (Modulo nodes exceeding their time budget).

<comment><USER3> Some quick questions:

\- How do you version your messages?

\- What problem domain are you working on?

\- What kind of process orchestration system do you use?

<comment><USER4> Same questions. These would be good to know.

<comment><USER2> Problem domain: Embedded machine vision / Embedded sensor data processing / Autonomous systems.

Process orchestration: Currently very simple. (Python multiprocessing). May change to something more complex in future.

Message versioning: It depends. My configuration management / deployment model means that most of the time backwards compatibility is not required. (The entire system is deployed as a single unit). When messages are persisted, the data recording system files the messages in a configuration management system that knows the system configuration that generated those messages -- so that when they are replayed back -- e.g. to test a new configuration -- the appropriate reading/de-serialization logic can be selected.

<comment><USER4> I appreciate that you replied, even if my reply was late!

<comment><USER2> No problem. Sorry for my delay in responding.

</comment></comment></comment></comment></comment></comment><comment><USER5> Honestly, I'm surprised by how these very opinionated and seemingly evidence- lacking posts that propose "new cool solutions" are able to get to the front- page of HN. They spice me with some information "look it'll be easy to test" and immediately slap me in the face without a shred of evidence and without even referencing similar or prior research - at least a comparison to event sourcing seems necessary.

Not the author's fault - he probably just felt the need to share his thoughts on this cool new idea he had.

I just wish HN users would take better care of the implications of clicking the +1 button. You're wanting others to read compelling information you've found.

<comment><USER6> On the other hand, I don't mind reading a short article on a different way of approaching programming. I agree that I would prefer something a lot more in depth, but if it eventually comes along I won't be surprised about it now.

For me the key here is that it's short, easy to understand, describes an interesting idea (even if I'm sceptical), and avoids trashing other ideas.

I certainly prefer this kind of article to the majority of stories unrelated to tech or business that are very popular on HN.

<comment><USER7> I appreciate reading it first, then coming here, reading a valid criticism, and then a rebuttal. It's an incredibly fast way to help me separate useful information. :)

</comment></comment></comment><comment><USER8> Alan Kay, one of the fathers of Object Oriented programming mentioned this :

> I'm sorry that I long ago coined the term "objects" for this topic because > it gets many people to focus on the lesser idea. The big idea is "messaging"

[http://lists.squeakfoundation.org/pipermail/squeak- dev/1998-...](http://lists.squeakfoundation.org/pipermail/squeak- dev/1998-October/017019.html)

<comment><USER9> On a few occasions he's actually said that the Linda model is better than straight-up message-passing.

</comment></comment><comment><USER9> As a first-class language feature this goes back at least to 1985 and Linda [https://en.wikipedia.org/wiki/Linda_(coordination_language)](https://en.wikipedia.org/wiki/Linda_\(coordination_language\)) and tuplespaces. (You'd know about Linda already if you'd read _Concepts, Techniques, and Models of Computer Programming_. Don't delay, read CTM today: [https://www.info.ucl.ac.be/~pvr/paradigms.html](https://www.info.ucl.ac.be/~pvr/paradigms.html) ) And here's a Martin Fowler talk about the practise of implementing it informally as a pattern or framework: [https://www.youtube.com/watch?v=STKCRSUsyP0](https://www.youtube.com/watch?v=STKCRSUsyP0)

<comment><USER10> I still have my JavaSpaces book lying around somewhere; tried to get Jini up and running to experiment with it to no avail.

I definitely liked the idea of tuple spaces but have never seen it implemented in a production system.

</comment></comment><comment><USER11> Highly dynamic behavior like this is great in very clear scenarios but think carefully before using it for the majority of your program.

Dynamic behaviors are gained at the loss of type safety (function calls are type checked, messages are usually not) and system coherence (just because you can add and remove components on the fly, doesn't mean that it's _safe_ to do so). To compensate for these losses, you need to increase documentation and increase testing. Most people don't and the result is significantly less reliable code.

> Coupling between callers and responders is removed.

But the number of dependencies is the same (reference versus message type). And now it's unregulated dependency without any compiler-level contract between the two. Are the parameters still what you expected? Are the parameters in the correct format? The message type will continue to match, even if these details change.

> Messages can be dispatched to multiple subscribers

Which is great for communication that is _intended_ to be observable but if you're using public message passing for everything, it's going to be tempting to snoop on the message bus and pull data intended for other recipients instead of passing it cleanly. Now your program is a fragile mess because everything is dependent on precise implementation details of unrelated parts of the program.

> Dependencies can be changed on the fly.

Which is another way of saying that you need to handle dependencies changing without notice. What happens if you're expecting a response but the generator of that response is _removed_ between request and sending response? What if you get a timeout? What if you get a partial response?

<comment><USER12> For the first problem, union types are the clear answer (abstract marker classes can approximate it somewhat).

The compiler guarantees that all sent messages conform to one of a list of possible valid message types. If the subscribers are static, the compiler can also guarantee that every valid message type has at least one handler; if the subscribers are dynamic, you're treading much more dangerous waters but at least you have a comprehensive list of possible messages to verify at runtime that each one has at least one handler.

For the second concern, I agree but I would invert it: if a publisher writes messages intended for a particular recipient, that's a misuse of a message bus. You'd be better off making a regular method call in that case (nobody says the bus should solve every one of your problems). Ditto for the third - if you absolutely need a specific response to your message, don't use a message bus to send it. The challenge of message-bus-based architecture at that point becomes minimizing the number of publishers which need to make direct calls.

</comment></comment><comment><USER13> To say that it reduces coupling is deeply misleading, IMO.

In order for your application to do things, certain flows must execute; A is followed by B which is followed by C for some specific functionality.

Without MOP, you might have A calling B, which calls C. This is straightforward to read and debug. If the interfaces between parts are complicated, they may not be easy to test - but this can be fixed.

With MOP, A dumps its output on a bus, and it's picked up by B, which dumps its output on a bus, and it's picked up by C. Now, in order to understand the composition, you need to trace the thread through the entire system, probably using string search - and not be certain you've got it right, because of modalities that may not be explicit.

It looks like the dependencies have been eliminated; but it's a complete illusion. They're are still there, they're just dynamic instead of static. C still needs to follow B which needs to follow A. If any of these bits are missing, the system is broken because it won't be functioning. And even worse, this situation won't be found statically without extra tooling.

MOP and its close relative event-driven programming is effectively COMEFROM as a first-class feature. It promotes write-only programming.

There certainly are reasons to go down that route - for example, you need to execute a lot of unrelated side-effects based on state changes in the system - but don't be under the illusion that it reduces coupling. The coupling is still there because the system breaks when dependencies are absent. It hides essential complexity, not just incidental complexity. Your incidental complexity burden needs to be pretty high before the pros outweigh the cons.

<comment><USER14> _tl;dr_ I think he's using a message bus in a mobile app the way you'd use Redux in a web app.

First off I have to quibble with his terminology. Usually people say "message" when the sender specifies who will receive the message — perhaps only by a name that is resolved later, but at least that much. What he's talking about sounds more like "events" that are broadcast for anyone to read or ignore as they please.

Anyway, he isn't entirely specific about how he's using these messages, but if he's using a message bus global to the app in order to communicate between different parts of the app, I found it to be tractable and very convenient when writing an Android app. Before I started using the message bus, wiring up connections between different parts of the app was a real pain, and it often had to be redone as functionality changed. When I started routing everything through the message bus, it was marvelously simpler. I just connected everything to the message bus. Obviously that's a recipe for disaster in a large enough system, but I would guess it's a rare app that gets large enough for this to become intractable.

 _With MOP, A dumps its output on a bus, and it 's picked up by B, which dumps its output on a bus, and it's picked up by C. Now, in order to understand the composition, you need to trace the thread through the entire system, probably using string search - and not be certain you've got it right, because of modalities that may not be explicit._

You're right that this is a difficult way to think about it, but there's a much simpler way. You think about elements in isolation and their responsibilities. You have a component that communicates with the back end; one of its responsibilities is to signal when the auth credentials are missing or invalid. You have a component that controls navigation; one of its responsibilities is to pop over a login window and push it onto the navigation stack when the user is prompted to log in. You have a behavioral component whose job is to detect the lack of credentials and signal that the user should be prompted to log in. Each of those components can be tested in isolation, and the only thing that unites them is a list of the messages and their meanings. If the responsibilities of each component are defined in reference to the same set of messages/events then it's clear that if one thing doesn't lead to another then some component isn't fulfilling its responsibilities or the responsibilities haven't been designed correctly.

Again, just as with Redux, I can see managing these interrelationships becoming intractable in a large enough system, but I think it works well for a moderately complex app, and simplifying the plumbing is a huge win.

EDIT: In response to _you need to trace the thread through the entire system, probably using string search_ , if you're working in a statically typed language, you don't need to rely on string search; you can just search for usages of the type of each message. For 90% of the event types you'll find two usages: the place where an event is fired and the place where it's detected and responded to. Most of the rest will be fired or read in multiple places but still a very small number.

<comment><USER15> > In response to you need to trace the thread through the entire system, > probably using string search, if you're working in a statically typed > language, you don't need to rely on string search; you can just search for > usages of the type of each message. For 90% of the event types you'll find > two usages: the place where an event is fired and the place where it's > detected and responded to. Most of the rest will be fired or read in > multiple places but still a very small number.

I think this gets to the crux of the nature of the solution. You are trading one very strongly statically typed message-sending apparatus (function calls; object member calls) for one more weakly statically typed message-sending apparatus ("events"/"messages" as standalone objects).

While, yes, you can get static typing hints back, for instance, by using statically typed Symbols/Enums for "message types" as opposed to using more stringly typed options, you are still trading very strict static typing (I'm calling this specific function, I'm acting on this specific object) for weaker static typing.

There's nothing wrong with using weaker static typing, of course, and it's nice having a spectrum of options. (It's also why I think it's silly to think its an either/or between OOP and MOP; they are a paradigm spectrum that isn't entirely mutually exclusive and often you want some of both worlds.) It's a trade off, and should be a clear trade off, and knowing that is half the battle.

</comment></comment></comment><comment> V-2 > _Coupling between callers and responders is removed. This makes life much > easier when we want to refactor our code, since objects don't directly > reference one another._

This is listed under advantages, but I'd say it's a mixed blessing at best.

Objects no longer directly referencing eachother means it is now way harder to reason about and analyze the dependencies in your codebase.

The dependency graph no longer exists in design time like it did before, lending itself to various static code analysis tools that could even draw you a pretty diagram thereof. Now it's grown and shaped in run-time.

Event buses are sort of like a "goto". It's sure convenient to be just sending events back and forth through some static event bus, but once things go south, trying to trace the root cause will turn you into Carrie Mathison.

In Android world, event buses are considered legacy now. One of the most popular choices, Otto, is explicitly deprecated (in favour of RxJava that the authors recommend to use instead).

<comment><USER16> The most fun is when one message causes another message to be sent. And then some components start depending on their order, creating implicit state machine of madness.

<comment> V-2 Oh yes, and sticky events, and flipping the "is it handled already?" flag on an event because some subscribers must have exclusivity...

</comment></comment></comment><comment><USER17> The article mentions a Xamarin application -- that sounds interesting. I'd like to hear more about how far this approach can be taken in a single-process application. Are they using an existing message bus, or did they build one?

I'm more familiar with the traditional (SmallTalk-style) MVC setup where the data model entities implement the observer pattern. In that case, observers subscribe to change events by attaching themselves to model values (event sources). I guess MOP differs from this by replacing centralised model value objects with some kind of identifiers used to key message bus subscriptions (?).

Related ideas for client/server are:

Event Sourcing [https://martinfowler.com/eaaDev/EventSourcing.html](https://martinfowler.com/eaaDev/EventSourcing.html)

and

CQRS [https://martinfowler.com/bliki/CQRS.html](https://martinfowler.com/bliki/CQRS.html)

<comment><USER18> Xamarin.Forms comes with a basic message passing system built in, which is what I assume the author is using. I've used it myself for a client mobile app project. It makes more sense with an MVVM setup like what Xamarin.Forms and WPF expect for user interfaces, since viewmodels can listen for model state changes that need to be reflected in the UI without requiring loads of explicitly coded delegates/events.

</comment></comment><comment><USER19> Isn't this just an event driven architecture?

[https://en.wikipedia.org/wiki/Event- driven_architecture](https://en.wikipedia.org/wiki/Event-driven_architecture)

<comment><USER20> Taken from the blog post

> MOP is a flavour of object-oriented programming (OOP) with the core idea > that your objects shouldn't directly call each other, but communicate by > passing messages via a message bus.

Sounds pretty much like a textbook definition of event-drive programming given by someone oblivious to event driven programming.

<comment><USER21> The main difference is lack of shared state. Events are not copied necessarily nor immutable while messages are. Holding to that model also makes it easier to interpose a mediator or a buffer. Or serialize them to disk or database.

The benefit is easier multithreading, drawback is memory use (incl. GC churn and bandwidth) and/or complexities of copy on write in multithreaded environment. The style is also not amenable to passing big amounts of data around directly. (That is often worked around via explicit memory sharing or a database - and passing handles instead of data.)

Another name for a different flavour of this is reactive programming.

<comment><USER22> I wonder if its possible/useful to construct a programming paradigm based on the architecture of the internet and TCP packets. Instead of having just one queue with messages, one could have multiple queues , each with its own address (analogous to a url?)

So, there might be a message queue for each object - This seems to be the way that ROS (the robot operating system) is architected when you have nodes that process messages. Still it becomes difficult to disentagle a datum that needs to be accessed and modified by different queues - and avoiding race conditions, etc. But the solution could use message passing itself. If a queue modified a shared datum, it could message all the other queues using that datum and they could then update themselves. Conceivably, each queue could have its own core and so making parallel processing effortless. You would never need to worry about messing up shared data since the data would look after itself. But the 'problem' is that you have traded time and complexity for storage space - each datum now has a 'train' of addresses it has to visit and it has to carry those addresses with itself.

</comment></comment></comment></comment><comment><USER23> The benefits listed in the article can also be realised with simple java style interfaces and dependency injection. That approach also solves all three disadvantages listed.

<comment><USER24> They're two slightly different tools. In MOP you use a mediator to facilitate message parsing. Anyone can subscribe to, and send messages, usually dynamically. That makes highly complex systems more approachable and distributable. It comes at an indirection cost.

Interfaces and DI are strongly controlled at the composistion root, but it's not easier for highly complex and distributed systems. However the amount of indirection is simpler to reason about and it makes sense for single process systems.

<comment><USER25> What I did to solve this: I serialized the stack frames and sent it with the messages and later when an exception happened it could be easily traced.

<comment><USER24> I'm not sure I follow. What problems are you solving by doing this, it sounds like a rather leaky and brittle thing to do in a distributed system.

<comment><USER26> Why 'leaky' and 'brittle'? Honest question. Sounds like a good solution to me in order to trace exceptions back to the source

<comment><USER24> Process A should not care how Process B implements anything, only how it responds to messages in a platform agnostic manner. There is zero guarantee that the stack keeps looking the same, hence brittle, and since you need to know something about how it's implemented to use the stack, it's also leaky. As soon as an exception happens, it should be logged. Not shipped off to a different process. From that log you know something about the state and the messages leading to the exception, and you can debug directly.

If A send "Process this data X" to B, and B fails with an OutOfMemoryException, it should respond "Unable to process X", or perhaps "Insufficient ressources to process X".

<comment><USER26> OK thanks, makes sense in genuinely decoupled microservice architecture (with messages crossing language and environment boundaries). Monolithic systems (distributed or not) seem not to have the same problems though, in which case it would still seems like a good idea to me, for debugging purposes.

<comment><USER24> I'm not convinced. If you're trying to debug a process, you should only operate on the messages and state. The messages you can log, and the state should ideally come only from messages, so you truly only need the messages.

One of the strong points about this way of implementing interprocess communication, is that it allows you to have a new and old version of the same process working concurrently, with the new only running and comparing it's output with the old one. Once you're convinced they work the same, you can retire the old process. To fully leverage this, every message should be platform and implementation agnostic. Even if it's a monolithic system on a single server.

<comment><USER26> Well, all I can say is that I personally often find the full stack interesting when debugging exceptions, and might still try and implement passing stack info in my monolithic system (in spite of this discussion which might have been above my pay-grade honestly). In case it breaches some important CS principle that I don't fully grasp yet then it will surely come back and bite me - which has happened before ... :) . Anyway, thanks for your time.

<comment><USER24> You're welcome. I juggle those concepts and requirements daily, and I value explaining it to the developers. The "why are we doing it this way" is really important for their job satisfaction, and it happens that they have an aspect I didn't consider, or a better solution.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER27> The brand of loose coupling message buses offer seems like a mixed blessing to me.

In a more oldschool, bus-less message passing system, different modules can't talk to each other unless they know about each other. That's potential a source of tight coupling if you're binding to specific classes, but it doesn't need to be - you can also couple to a protocol, and be willing to chatter with anyone who speaks that protocol. But still, modules can't talk to other modules unless they're explicitly told about each other.

Pair this approach with an IoC-style architecture where the communication graph must be assembled in a single composition root that lives very close to the application's entry point, and you've got a great tool that gives you an easy way to monitor and manage the complexity of the application.

With a message bus, you're basically just taking that central composition point away and replacing it with a big ¯\\_(ツ)_/¯. I've been there, it can be very flexible when you want to build an application quickly, since you don't need to think about how messages will be routed. But I haven't found that the message bus reduces coupling. Since it takes away basically all the need to stop and think about what you're doing before subscribing to a message, you can quickly end up with all sorts of crazy functional dependencies that nobody fully understands because everybody was hacking them together independently.

I guess what I'm cautioning is, don't be too quick to conflate loose coupling with message buses. The one does require that you do the other, but that doesn't mean you can't do the other without the one.

</comment><comment><USER28> Or you could just use Erlang/Elixir and be done with it. Presented approach to message bus has its own share of problems, like mentioned in the article message-type explosion.

</comment><comment><USER29> weird to assume a bus, since normal message-passing in something like Smalltalk doesn't, and neither does MPI (whose programs are obviously more prevalent, at least in terms of cycles consumed...) the bus-iness does make it look more like event programming.

</comment><comment><USER30> When you have to update several data stores via messages to several groups, what do you do for transactions?

Seems you'll need a consensus layer and the ability to rollback if you don't want to end up in a terrible mess later right?

<comment><USER31> Yeah I don't know why the author doesn't call this out as a con. Error cases are much harder to reason about, what if another object blows up halfway through processing a message? How do retries work? Transactions all become a consensus problem or a two phase commit.

</comment></comment><comment><USER32> I agree with the author roughly about the benefits and disadvantages. And would probably add to the disadvantages that synchronous sequences are harder to model, since with pure asynchronous messaging all components will get state machines.

Regarding the advantages: Interfaces and dependency injection (with or without frameworks) also solve the first two bullet points also rather nicely. And they keep the synchronous nature and strictly typed interfaces. The third point can be achieved with data binding or interfaces which allow for subscriptions (e.g. via classical "Event"s or Observables).

<comment><USER33> In your first statement did you intend to mean that asynchronous was an advantage or disadvantage? I'd take objects being modeled as independent state machines as a significant benefit.

It doesn't seem that dependency injection really provides the benefits of the second advantage as the author describes it. Specifically he mentions that the recipient can decide wether and/or how to respond to a message. DI doesn't provide that. The point isn't _just_ that you can dynamically swap objects, which seems precarious in a lot of ways as values/results in referenced objects could change under your feet which without pervasive usage of observers means lots of easy to make mistakes for devs.

That means for a DI system to really be dynamic in the same sense that you need an event system / observer pattern in addition to DI to provide similar benefits while being more complicated due to now three layers of abstraction (at least) required. Whereas an "MOP" system encourages devs to think about outside changes from the start and makes it the path of least resistance while reusing the same abstraction to enable dynamic target and 1-to-many fanning. The usage of DI systems results in much more ceremony and generally results in overly complicated system architecture as compared to a good messaging system as the author highlights. Now a really complex message topology can become really confusing which results in similar architectural issues as an DI / event based system if not checked.

</comment></comment><comment><USER34> I think this is a very interesting direction.

Classic programming generally doesn't impose restrictions about which direction the data flow is. By default, methods take value from their callers as input, and return values to their callers as output.

An "notification"/"fire-and-forget" interface allowing no data to go back to the caller (no return value, no "output parameter", no visible change to the program state, from the caller's POV) has very interesting characteristics (Like being trivially mockable).

<comment><USER35> I believe this is what Command Query Responsibility Segregation (CQRS) is all about. By having one object handling writes, and another for reads, things are easier to reason about among other benefits. An event bus is kind of required in this kind of architecture if the view that's reading wants to stay updated, as it may no longer access a return value.

Source: [https://martinfowler.com/bliki/CQRS.html](https://martinfowler.com/bliki/CQRS.html)

<comment><USER9> I think Fowler would describe the model in the article as more like "Event- carried State Transfer": [https://www.youtube.com/watch?v=STKCRSUsyP0](https://www.youtube.com/watch?v=STKCRSUsyP0) .

</comment></comment></comment><comment><USER36> "It's harder to reason out program flow. "

\-- I think this is the key cons which might lead us into nightmare.

<comment><USER6> For me the interesting thing is that the very lack of coupling seems like a problem to me. If A depends on B, I'd actually like B to be coupled to A. Back in the old days when I believed "generic components" were a cool idea, I'd always run into that problem. It's too general and so it has not structure. And then it is actually implicitly coupled (even if it has a network system and a communications protocol in the middle) -- it's just that you've abstracted away the interfaces with a bunch of adaptors. It's like having a plug on your electronic device that can fit any socket, but only one of the many sockets actually works.

I imagine the author has techniques for dealing with that kind of problem, but has unfortunately not shared them. Maybe another time.

</comment></comment><comment><USER37> I like the general idea and have felt the same way for a while. For the benefits they list a message bus isn't necessary. Even dispatching to multiple subscribers can be straight-forward with a proxy object. Instead you can design your OOP system to behave as though it's passing messages and get a majority of the benefit along with a straight-forward path to refactor towards a message bus if/when you're ready.

</comment><comment><USER38> This seems similar to Cocoa's NSNotificationCenter, where you can post messages or subscribe to messages.

One of the better Cocoa books motivates it with the following example:

Say you have an app with multiple windows. You also have a settings pane, where you can change the background color of your windows. You don't want the "background color" component to keep track of all of the open windows in the app, that's not at all related to its responsibility. So instead you use the notification center to post a message "hey the user changed the window background color to blue", and windows will subscribe to "the user changed the window background color" messages. This way the color picker and the windows themselves can work together, without ever caring about the others' existence.

</comment><comment><USER39> What is the recommended message passing library for mobie {iOS, Android}? In particular, if one is mixing javascript within webView with native code, message passing between the native and js components can be valuable.

<comment><USER40> I've used EventBus in the past on Android. It always felt a bit hacky and like "cheating", and navigating flows through the app could be tricky, but it kinda worked?

[https://github.com/greenrobot/EventBus](https://github.com/greenrobot/EventBus)

RxJava is the new hotness at the moment though, which kind of replaces EventBus, so I don't think you could convince a team to develop an app using entirely messages. Still, I'd like to try it for a personal project.

<comment><USER21> RxJava works but debugging is a pain in that system. Unlike an explicit message bugs it is hard to get a real overview in Rx system as the buses are hidden, multiple and wrapped. You get to add an interposer manually too every place of use to fix this... quickly gets unwieldy but can convert your application to MVI model by force.

</comment></comment></comment><comment><USER41> Windows programming was message passing. WM_CREATE Oh the glory.

</comment><comment><USER42> My Lua system uses MOP too, though I never heard that term before. And structured pipes. I like it and wrote it for a dataflow bsased event driven system.

</comment><comment><USER43> Isn't this just the way Win32 programs were written? Each window could have a routine that received messages like WM_PAINT, WM_SIZE, etc.

<comment><USER13> Win32 is much closer to object orientation with duck typing. You normally need a handle to the window you want to talk to, which is explicitly the kind of coupling that MOP rejects, inverting the dependency.

Further, with Win32, you can choose between an async or synchronous message send, depending on whether you are interested in side effects or not.

</comment></comment><comment><USER44> I don't think this article is very good. The main achievement of message passing is to decouple call stacks, and the reason why you do that is that you get more control about which threads a function is called from. You turn to message passing because you want to get away from callback spaghetti. The article doesn't even mention concurrency.

</comment><comment><USER45> One important advantage not mentioned is the sending side. You can respond to websocket messages, push notifications or HTTP callbacks using the same message structure so every new source of messages can be added with only one line of code and the receivers can be unaware of a new source.

</comment><comment><USER46> The author mentions that messages cost more memory, because shared data must be copied. This can be avoided If you base your classes in immutable data. Then you can pass references around without worrying about modifications.

</comment><comment><USER47> Isn't this rather like Windows Communication Foundation, COM, Soap etc.? Or even Linux DBus or any other remote procedure call system.

</comment><comment><USER48> Under disadvantages:

> It's harder to reason out program flow

This seems like a big one. You're basically creating a distributed systems problem for yourself.

<comment><USER49> How is programming in a standard OOP system any easier to reason about? Unless all your object state is immutable, it becomes hard to reason about program flow very quickly (non-linearly with code size, usually.)

<comment><USER13> You can't normally talk to an object without a reference to it. This means data flow can be used to scope control flow. MOP indirects everything through a big global variable, so anything can talk to anything, and calls it a feature.

Object interfaces in static languages are static, most of the time. Thus a lot more of the conversation can be statically analyzed for correctness.

</comment></comment></comment><comment><USER50> Erlang?

<comment><USER51> More generally, the actor model ([https://en.wikipedia.org/wiki/Actor_model](https://en.wikipedia.org/wiki/Actor_model))

<comment><USER52> It is not a complete match. A quality of the actor concurrency model is unreliable message delivery. The system described in the post could be done with reliable delivery expectations.

</comment></comment></comment><comment><USER2> How does this differ from an Agent based system?

<comment><USER53> Generally in an Actor/Agent based systems messages are still passed to specific 'entities' rather than using a Pub/Sub bus where 'entities' are only coupled through the messages they send and those they subscribe for. I think the article describes the latter.

Although I've written buses in the past that let the user address messages to different 'entities' and groups, even ad hoc groups defined by features like spatial locality.

<comment><USER2> Thank you.</comment></comment></comment>


Inside the Bizarre World of Japanese Pickup Schools  - <AUTHOR> http://www.wired.com/culture/lifestyle/news/2008/02/pick_up_school <comment><USER2> It's strange that the Wired article is implying that these types of pickup workshops are a "crazy Japanese thing", when the reality is that this stuff has been happening in the States for 10 or 15 years now.

</comment><comment><USER3> If the pickup school teacher gives his students the courage to approach women (even if it is with a pre-packaged ice breaker), I think that's a significant step: they are initiating and finding that the encounter didn't kill them. And like anything in life, taking a class is just a start - it's up to the student to continue learning (by taking initiative and gaining experience). I think (assuming you are single) that approaching an attractive human of the opposite sex whomps public speaking on the hierarchy of fear or stress-inducing situations.

</comment><comment><USER4> "Since joining Mr. Fujita's school, I have had five successful relationships," says Hachioji Robocop, a 27-year-old civil servant who has been taking the course since 2004. "I lost my virginity six months into the course, and now I can now communicate with women. I'm very grateful."

Reminds me of The Onion.

<comment><USER5> I can only infer from the quote that different people have different notions of "successful relationship".

</comment></comment><comment><USER6> Seems similar in plot to that book outlining pickup artists (PUAs) in "The Game". In that book, PUAs were also teaching students in the LA area, and it got to a point where their students were mimicking all their best lines, thus rendering their teachers' routines ineffective. I figure the same story will play out here.

If women respond to making them laugh, then like comedians, being original has all its perks.

<comment><USER7> Whether or not you want to get involved in the "pick up" scene, "The Game" is a great book. It's an entertaining read, mostly for the characters involved, but Neil Strauss is a pretty funny writer as well. There were several points in the book that literally had me laughing out loud, and I must say there aren't too many things that do that for me. I'd highly recommend picking it up.

</comment></comment><comment><USER8> "I always teach my students that sex comes first," he says. "Then you figure out whether the woman is worth marrying later."

</comment><comment><USER9> Slightly unrelated, but the word 'nampa' means to pick up women, but also has a second meaning of 'to be shipwrecked'. An infinite wealth of puns are available between the two.

</comment><comment><USER10> > "Since joining Mr. Fujita's school, I have had five successful > relationships," says Hachioji Robocop,

oh my god!? his last name is Robocop!?? that's the best thing ever. i bet i could get laid 100x as much if my last name was Robocop.

<comment><USER11> It's probably his first name. Remember Asian name order.

<comment><USER10> good point. but hey, that's even cooler.

</comment></comment></comment><comment><USER12> In other news, Travelocity and Orbitz reported a sudden increase in fares to Japan.

</comment><comment><USER13> "I always teach my students that sex comes first,"

You mean all the time I've been working on a startup to get chicks has been wasted?!?

<comment><USER5> Yeah, you should have tried sex first to see if it is even worth the effort.

<comment><USER13> Still practicing.</comment></comment></comment>


Ask HN: How do you choose, among many ideas, one to start off? - <AUTHOR>

I have many ideas and each day i come up with at least 2 or 3 new ideas to solve some sort of problem or fulfill some necessity. How do i know which idea is the best to follow through? How do i minimize the risc of choosing a bad idea and time waste?
Is there something before hypotesis tests, MVP or market research that could apply in this case?
I appreciate any literature recommendation on that.
Thanks! <comment><USER2> Good question. I'm pretty much the same way. Tons of ideas, tons of awesome projects, limited resources and ability for execution. I think the biggest factors you have to consider when trying to answer this question are viability, difficulty, and ROI.

When evaluating viability you want to ask yourself questions like "Is there really a market for this?", "Would this substantially improve the process of doing X?", "Am I creating a new market here?", "Is this an incremental improvement to an existing product or process or am I adding exponential value?", "Are there companies currently in a position to compete?", "Could an established player in this space do this easily and push me out of the market?", and ultimately: "Would I use this? Regularly?".

Difficulty is fairly obvious and deals with the question of energy in, and whether it's truly feasible for you to pull something like this off in a reasonable timeframe, given your resources at hand.

ROI is the ultimate question that asks "What's the upside?", "Is it really going to be worth my time to solve this problem?", "For the time (money) I invest in building this, is it going to pay out more than the other projects I could have been working on?" (opportunity costs).

Good luck!

</comment><comment><USER3> 1) write it down and review after a day or two.

2) Do home work, search for the best current way to solve the problem.

3) scale matters, a jet engine was a big improvement over a propeller engine. Focus on big ideas

Reference - this is how someone who has PhD is taught to evaluate an idea. [http://www.sce.carleton.ca/faculty/chinneck/thesis.html](http://www.sce.carleton.ca/faculty/chinneck/thesis.html)

4) Einstein was well known for saying that he had so few good ideas, he did not need to write them down. He had learned how to measure the value of an idea.

As a side note, I also feel very good ideas, ideas that offer at least 100% ROI are so rare that you will know when you have one. 100% ROI is a tough call, but I would only spend time on ideas that offer 100+% ROI.

</comment><comment><USER4> Some recommend using the Google keyword planner tool to ascertain if very many people seem to be searching for whatever it is that you have in mind.

Obviously this works better for some categories of ideas than others; if your idea is innovative and unique, the fact that nobody is searching for it doesn't necessarily mean anything. On the other hand, few people searching for "royalty-free polka music" is probably a good indicator of a not-very-valuable idea...

</comment><comment><USER5> If you look at many of the most successful companies, many solve a problem people already had and the solution is either simpler or cheaper than existing solutions rather than being the first to solve a problem. Google wasn't the first search engine. Craigslist didn't invent classifieds. EBay didn't invent auctions. What they all did was solve a problem more simply and cheaply than existing solutions.

<comment><AUTHOR> Good points! These arguments leads us to the point that we don't need to give up on some idea just because it is too simple or is something that already exists in the market. Although sometimes it's really hard to go on over some idea that already has a strong and stablished competitor in the market.

<comment><USER5> Yes that is true. I would add that typically most startups attack a particular niche first before taking on that strong competitor. A niche where that competitor is weak or absent.

Some of the best advice for you question is from Paul Graham: [http://paulgraham.com/startupideas.html](http://paulgraham.com/startupideas.html)

</comment></comment></comment><comment><USER6> That's a problem I'd love to have! I feel like I don't come up with ideas very often, and when I do they don't seem to be very good, feasible, or original.

<comment><AUTHOR> My ideas appear often when i'm having trouble with some situation and suddenly i've look at some app on the internet that with some modifications could tackle that trouble. Often i have the same doubts as you on how good, feasible or original the idea is and often this questions makes me leave the idea behind too soon.

</comment></comment><comment><USER7> Best way to not waste time is by working on something that you especially have a problem with, and do research to see if other people have the same problem.</comment>


Ask HN: do you want to enter YC Winter 2010 as part of my team? - <AUTHOR>

I have been thinking about the music industry since 2000 when the RIAA mounted a massive legal challenge against Napster and was eventually significantly altered and sold off by Shawn Fanning.
In 2003 I came up with a website idea and built it using the Xoops CMS, which if it were further developed in a custom manner (and also funded) would've resembled the functionality of MySpace for linking fans with artists, and been more comprehensive.
Right now I am seeking two US-based co-founders who'd like to apply for YC funding 2010. I am now in Israel and plan on being the remote cofounder. First and foremost a technical lead is required.
Potential cofounders may be developers looking for a great project, or existing teams of two or more wanting to (with myself) continue working together in such a manner.
I do not feel overly compelled to enter YC, but feel it would be a great process to maximize the likelihood of real industry change and provide great relevant learning.
I am ready to fill out the entire YC application. What's missing are team mates.
My idea focuses on optimizing gig creation and I have experience in this field... I don't want to say too much. I have registered a couple of domains already.
http://ycombinator.com/ideas.html (this business idea addresses 1. A cure for the disease of which the RIAA is a symptom.) <comment><USER2> You wouldn't come into the Valley for YC, and you're not technical? Why would a good dev want to sign up for this?

Regardless of the I-need-a-technical-lead issue, I think it would be missing a major point of YC to not colocate for the time it meets, given you're accepted. Part of the push of YC is to get you to fully commit and take the leap: you're either going for it or you're not. Startups are too close to death at any given time for there to be an in-between.

<comment><AUTHOR> If we were accepted, then I could come into the valley. I could beforehand in fact, but this would be risky cost-wise. Perhaps PG could interview on the basis of "accepted if he comes"??? I am flexible.

I could also run a video entry...

I have a semi-techincal background, HTML, CSS, Javascript and a degree in Information Systems. Coding large projects from scratch does not entice me: I use mainly Open Source LAMP and tweak.

</comment></comment><comment><USER3> I think you need to be particularly careful when approaching a technical audience (like HN) for something like this.

I'm not saying that I feel this attitude in particular from you, but posts of the "I'm the business guy, I need a tech guy" nature often come across as condescending to me, as a technical reader. I think the implication is "anyone can make the tech work", when in reality a technical cofounder probably feels like they'll have _at least_ as much input into the startup as you.

Or this could just be a personal attitude I've adopted after too many proposals of the "here's 1%, now go do all the work" nature ("I'm worth more because I'm the business guy!")

:)

In any case, best of luck finding someone.

<comment><AUTHOR> Thank you. In the scenario I envisage, the technical lead becomes the CEO assuming I do not travel to California.

I am looking for a high calibre team and feel that I and the idea warrants one.

I am sacrificing my control and equity by recruiting on HN in this manner, and I agree with you about the 'tech guy' often receiving the raw deal at times, and have actually worked as that person numerous times -- the sub-ordinate in 3 non-VC backed startups already, including a ticketing startup.

I am more than happy to grant more equity to other cofounders than myself: it would depend on how much input they want from me.

I have also been a drummer and know what it's like for musicians and managers to organize gigs and tours.

</comment></comment><comment><USER4> No offense, but why do we need you?

<comment><AUTHOR> I can hire local developers but I am exploring the YC route first. Who needs anyone??

<comment><USER4> I think the particular thing about startup founders that is emphasized here and by Paul Graham is that they have to be exceptional, or at least offer something that most people don't have.

Anyone can hire developers and anyone can apply to YC. I'm not saying you have no worth, but you haven't really given a good reason for anyone to join you yet. If I personally know you, that might be a good reason, but I don't, and the fact that you're calling out on HN means you're not looking for someone you know.

So if you do have an urge to work on a startup, get someone you know or do it yourself if you absolutely don't know anyone. Or at least tell people specifically what you can do and make sure it's something that's not easy to find everywhere.

I would love for a cool people to work with but we're talking about splitting the company with a whole other person, and if you are not able to offer even a fraction of the other founders' worth (because at this point technical founders will be doing most of the work), then it's a hard sell.

Do you have a degree? Do you have a good idea? Are you objective? Anything to show that you have value? Frankly if all you have is an idea that's not even enough value for you to be a co-founder.

<comment><AUTHOR> I appreciate your response and interest. My original posting basically spells out my position. There's plenty of work for me to do. If you're vaguely interested then I can sell myself more to you either in public or private.

I am going to develop this project, I just want to maximize my chances of success, rather than have someone come along and copy me down the track who's in a more commercially viable position (like an incumbent, someone VC-backed, or someone with deeper pockets).

</comment></comment></comment></comment><comment><USER5> _I do not feel overly compelled to enter YC_

Then I suspect you have failed before you have even begun :) (pg does read the site here btw).

Incidentally I suspect I can explain all the downvotes; your language is something in the style of "corporate exec" (maximizing, optimizing, relevant learning). The kind of people you will find here already have experience of guys who talk like that (and often they are bad experiences for a developer). Certainly if anyone pitched a project to me with that language I would reject it - I know already it is never going to complete comfortably.

<comment><AUTHOR> If I felt "overly compelled" I'd be in the valley now looking for people to work with on a business or tourist visa staying in cheap accom until I could move forward. The downside is too high and my best alternative to any negotiated agreement at that point would be zilch so my leverage would be low in negotiating any agreement. I don't lack confidence but have to manage risk, or in layman's terms, I don't want to overly put my balls on the line unless I absolutely must.

Sorry about being a corporate exec in those terms, it's sometimes a decent shortcut, some execs know what they are talking about- maybe not so many consultants. I am definitely no corporate exec, and never worked in a large company.

Are you specifically interested? I am happy to complete the application and then discuss it with people who might be or are seriously interested.

I have developed a trust in my own judgments and ideas over the years seeing many come to fruition by other people. Unfortunately, I haven't been in the position to so far execute and capitalize myself.

edit: all I'm basically requiring is the benefit of the doubt (and I will have to check my idea isn't then ripped off.) Ideas do have value, it's not all execution - if they did not, why are there patents (incl business process patents) or business secrets.

<comment><USER5> * I am definitely no corporate exec, and never worked in a large company.*

But you sound like one; you dont have to work at a corporation to have that approach.

There is nothing wrong with talking and acting like that - the only thing is you probably wont find anyone here willing to work like that :)

pg has an excellent essay called _Hackers & Painters_ which explains, basically, why you don't want the hackers you'll find here. We dont implement ideas :)

Ultimately:

 _I don't want to overly put my balls on the line unless I absolutely must._

That is probably the main reason you wont find anyone here to help you out. And is definitely the reason YC would almost certainly turn you down. We put our balls on the line with ease - because that's how you make good software :D

</comment></comment></comment><comment><USER6> Hmm. It's two weeks before the application deadline. Do you really think an ad hoc team, assembled just weeks before the application deadline, will stand a chance?

<comment><AUTHOR> Yes, why not?

I will interview of course and check experience.

<comment><USER7> "I have a great idea for a startup, but I'm not technical. Will you still fund me? Can you help me find programmers to implement my idea?

...

It's much better if you find one yourself through friends of friends than if we introduce you to someone. Teams thrown together for the purpose of starting a startup usually fall apart under stress. You need some kind of personal connection."

<http://ycombinator.com/faq.html>

<comment><AUTHOR> I am technical, just not technical Enough, I can also hire but YC is preferred.

</comment></comment></comment></comment><comment><AUTHOR> \-- I just have to say, many of my comments are getting downmodded, I am answering legitimate concerns to a legitimate posting. If someone has a deeper problem of more than just "I don't think this will work and I don't agree with what you're doing" kindly let me know.

<comment><USER8> Sorry to say, but after reading this thread, my gut feeling is 'run away as fast as possible'. I think others are trying to communicate the same more politely.

One important thing that you are missing: you would not want to startup with someone you don't know from before, and have complete, blind trust in. And you cannot 'hire' a cofounder. You hire workers, but a cofounder doesn't work for you, by definition.

<comment><USER9> I have a deeper problem with it. You are bringing NOTHING to the table. I said it: NOTHING. And you are trying to EXPLOIT an engineer, someone who has developed ACTUAL SKILLS through YEARS OF HARD WORK, STRESS, AND FRUSTRATION. These skills have GLOBAL SOCIAL VALUE. That means that people are willing to PAY ENGINEERS MONEY on the market in order to build things. You claim you are bringing an IDEA, but truly, ideas are WORTHLESS: NOBODY will pay you money for them. On the other hand, if you have something PATENTABLE, that's a different story.

If you had been around the site a while, you would have observed these things for yourself. Oh wait - checking out your profile, you have been around for over a year. In my opinion, your complete lack of social/political savvy will lead to your complete failure as a businessman.

<comment><AUTHOR> "Hero on the quest for truth" ay? thought you'd be more skeptical than cynical.

I'll bring my money to the table if all else fails, that has currency, and it's something that many software developers are solely only interested in: they'll bleed you dry, I've seen it for myself. You think I'm trying to exploit people? Wrong. A sense of ownership and shared success is what I though approaching this community could garner for my idea, if there were any takers.

You can take a horse to the water but you can't make it drink.

Over and out.</comment></comment></comment></comment>


How secure is your password? [Graphic] - <AUTHOR> http://www.cxo.eu.com/news/password-protected/

<comment><USER2> LOLWUT. Why is "money" less strong than "business", while "abc123" is stronger than "qwerty"? Fluff.

</comment><comment><USER3> I saw the headline and took "[Graphic]" in the wrong context and wondered what kind of shocking imagery would accompany an article about password strength.

</comment><comment><USER4> Why Nicole?

<comment><USER5> I'm guessing children's names.

A quick check of popular baby names in the US (here: <http://www.ssa.gov/OACT/babynames/>) shows Michael and Daniel to still be quite popular. All four names mentioned appear several times in the top 15 baby names for years between 1979 and 2000 or so. Nicole averages around the 7th most popular name for the 80's.

</comment></comment><comment><USER6> I so don't get why people are not encouraged to use pass phrases rather than single words as they are both easy to remember and long.

Take the example weak password "iloveu" if you changed that to "i love beer" or "i love big cocks" you rocket from weak to strong. You can even work the name of the site in there "i love facebook" or "i love hacker news".

/me shakes head

btw. what's a "strenght meter"?

<comment><USER7> > what's a "strenght meter"?

A pretty good password.</comment></comment>