Elixir v1.0.0 released - <AUTHOR> http://elixir-lang.org/blog/2014/09/18/elixir-v1-0-0-released/ <comment><USER2> I'm constantly impressed by the level of execution of the Elixir project. In ~3 years they have accomplished much more than many other language ecosystems have to date.

It's great to see the core maintainers understand that you need MUCH more than just a compiler, runtime, and std lib to create a truly vibrant ecosystem. The Elixir project includes a standard way to do templating, a powerful and robust shell, a very full-featured unit testing library (not just assert statements), a standard logging system (this is sooo often overlooked), and, to top it all off, a build system that also lets you manage dependencies!

I honestly can't name any other ecosystem where you can just jump in and all these problems are already solved for you by the core project maintainers, instead of by 3rd parties competing for mindshare. It's truly refreshing because it gives the community a common language and toolchain to work with and get stuff done.

Hats off to everyone involved! You guys continue to amaze me.

<comment><USER3> Don't know or have plans to use Elixir for now since I have always seen the Erlang VM as tackling only the problem domain of requiring high fault tolerance and distributed computing systems but no so much for general purpose programming as languages like ruby/python/js/clojure etc. For example: how may programmers are writing systems like Riak, Amazon's SimpleDB, CouchDB, RabbitMQ every day?

That said, from reading the article you forgot to mention Hex, the package manager.

<comment><USER4> Whether you - as a programmer writing them - realize it or not, many complex web apps would benefit greatly from Erlang concurrency, distributed computing and fault tolerance support. Every time I'm forced to use Celery or multiprocessing or a cronjob - and that happens quite often in nontrivial projects - I wish I worked with Erlang.

I learned to love Erlang some time ago and its various quirks are mostly invisible to me, as I generally know them well and am working around them reflexively. However, I recognize that for people who don't know Erlang yet, Elixir provides a much easier path to obtaining full power of Erlang VM and ecosystem. It can also benefit more experienced erlangers, as it improves some Erlang features and then adds some totally new ones.

Elixir is a language which makes Erlang better suited to high-level, glue-like scripting purposes, while still providing full access to things Erlang does exceptionally well. In a way it's an effort to make Erlang reach outside of its specific niche by making many things traditionally hard or unpopular in Erlang easy to do in Elixir.

In short, if you're a serious programmer who works on anything that has a server or is related to network in some way (which includes all web apps, most mobile apps backends, all IM software, many different services like Dropbox and many more) - you owe it to yourself to try Elixir out. Now that the "awkward syntax" and many (admittedly) irritating quirks of Erlang are gone and you're left with just the good parts you have really no reason not to learn and use it.

</comment></comment></comment><comment><USER5> Elixir reminds me a lot of Clojure.

\- It's a language that sits on top of another language's bytecode (Erlang vs JVM)

\- It has its own task runner and dependency manager (mix vs lein)

\- It has homoiconicity and macros!

\- One of its main features is amazing concurrency support.

But Elixir has been in development for a much shorter time than Clojure. Yet it's approaching the same level of maturity of Clojure very quickly.

I'm eager to see where is Elixir is adopted. I hope to see it gain some traction in the web development world.

<comment><USER6> I though Elixir was not a whole new compiler, more like coffeescript:javascript than clojure:java.

<comment><USER7> No, it is not like coffeescript:javascript. Coffeescript compiles to javascript source code, which is then turned into bytecode by the VM. Elixir is _NOT_ compiled to Erlang source code; rather, it is compiled directly to BEAM bytecode.

So the clojure:java comparison is accurate.

<comment><USER8> Elixir also gives you really cool meta-programming tools, a way to extend the language, that aren't part of CoffeeScript.

<comment><USER7> I can't say for sure, but I don't think it would be impossible to add that kind of capability to coffeescript, but you are right that right now coffeescript can't do that

<comment><USER4> Some people tried IIRC but they never got very far. One reason could be that syntactic abstraction is generally not in great demand, but could be something else entirely. Also, take a look at Sweet.js

</comment></comment></comment></comment></comment></comment><comment><USER9> What have you built with Elixir, HN?

<comment><USER10> I'm writing (professionally) a backend for the "internet of things".

<comment><USER11> Wow! I had the same idea not so long ago. Are you by any chance targetting Bluetooth Low Energy connectivity? If so, can you share a bit on how are you going to interface BLE with Elixir? If not, what kind of IoT connectivity are you targetting ?

<comment><USER10> Actually i'm not targetting any specific kind of devices — the core server is extensible, you add your own sources (tcp, udp, whatever) and your encoder/decoder. The original scope of the project was GPS beacons.

</comment></comment></comment></comment><comment><USER12> Elixir is the #1 language I want to succeed. I can't imagine how amazing it would be if web development counted Elixir among its top 5 languages.

</comment><comment><USER13> Congratulations to everyone involved! I have all of 7 commits in, all trivial, but huge thanks to everyone in the committer list! It's amazing.

</comment><comment><USER14> I looked at erlang for a while and I really liked it, even if I never used it. Now I'd like to learn Elixir. However,I ask myself why should one prefers Elixir over scala+akka

</comment><comment><USER15> Congratulations Valim, Eric and everyone else. Great work.

</comment><comment><USER16> Wonder why the release announcement came days after it was available through homebrew?

<comment><USER17> The language creator and maintainers wanted to give package maintainers time to update their package dependencies to Elixir 1.0.

</comment></comment><comment><USER18> I have JUST finished Dave Thomas' excellent (beta) book, "Programming Elixir," and honestly I can't wait to start building great concurrent, network-aware processes with it!

</comment><comment><USER19> Who is the biggest customer of Elixir?

<comment><USER20> Open source community.

</comment></comment><comment><USER21> I looked at Erlang for a while and I liked it. Now I want to learn Elixir. However I ask myself why one should prefer it over Scala+Akka

<comment><USER22> For one, Erlang has much better latency, as it has process-local garbage collection. In Akka, if the gc has to do a major collection then all threads must be paused.</comment></comment>


You'll never be this good at games... - <AUTHOR> http://www.gamesradar.com/us/pc/game/news/article.jsp?releaseId=2006032219817514003&articleId=200711239291393082&sectionId=1006&pageId=2007112394150531054 <comment><USER2> Damn, and to think, all that time I spent reading technology blogs and writing code, I could have been playing video games.

<comment><AUTHOR> You could be famous now ;-)

But I was thinking the same thing: what if, instead of becoming a pro at "guitar hero", that kid had invested the time to learn playing an actual guitar?

Then again, there are millions of guitarists, but only a few pro guitar hero players...

<comment><USER3> Funny, the first thing that popped into my head after seeing the GH clip was that it was probably someone who already knew how to play the guitar. I would think that a good guitar player, for whom fretwork would be second nature, would find Guitar Hero to be a breeze even at the hardest levels. They don't have to worry about working individual strings, so speed becomes less of an issue.

On the other hand, whoever it was playing that Japanese flying/shooting game is a monster. Being able to operate using a completely different train of thought for each hand and operate really is fundamentally difficult. Most of the other things are just routines that can be practiced ad nauseam until muscle memory kicks in and they get it right.

<comment><USER4> GH has less to do with playing guitar than pure rhythm -- I can't play guitar but I can play the drums and I'm great at Guitar Hero. I've seen people that play guitar pick up Guitar Hero faster than people with no musical background but anyone with some rhythm can do pretty well in guitar hero. There are various stories on the internet of professional rock guitarists that are unable to play solos they recorded in Guitar Hero.

The other important skill is reading the notes as they fly down the screen -- I was good at this because I played Harmonix's pre-Guitar Hero games with nearly identical gameplay, Frequency and Amplitude. I was good at sight reading real written rhythms also.

</comment></comment></comment></comment><comment><USER5> If you liked the video, check out this movie on Donkey Kong world records, called "The King of Kong": <http://www.imdb.com/title/tt0923752/> User Rating: 8.6/10

</comment><comment><USER6> It's sad that I've seen like four of these, including the pop'n music one. There are also some impressive videos on YouTube for Brain Age.

</comment><comment><USER7> And you _can_ never be _this_ good at games: <http://tasvideos.org/>

</comment><comment><USER8> Waste of talent. Quick thinkers like that should find something more productive to do.

<comment><USER9> Not necessarily true. I used to date a girl who was dumb as a brick . . . but could beat the shit out of minesweeper.

Incidentally, years later I had a roommate who tied the Intermediate minesweeper world record at 10 seconds and could beat Expert in under a minute.

I'm sure there's some Bokononist term for this.

[after wikipedia search] - maybe Minesweeper is my vin-dit</comment></comment>


The Importance of logging for web applications - Security talk - <AUTHOR> http://blog.sucuri.net/2010/03/importance-of-logging-for-web.html

<comment><USER2> Very good article and awesome mention of OSSEC. Good to see it gaining some attention.</comment>


The Brief, Incredibly Poetic Life of Bañec Hazyblockades: A Dwarf Fortress Diary - <AUTHOR> https://www.rockpapershotgun.com/2018/06/28/the-brief-and-incredibly-poetic-life-of-banec-hazyblockades-a-dwarf-fortress-diary/ <comment><USER2> If you are curious about Dwarf Fortress and want to understand the attraction without necessarily grinding through learning how to play the game, I _highly_ recommend watching some of the play throughs on Youtube by Kruggsmash: [https://www.youtube.com/user/kruggsmash/playlists](https://www.youtube.com/user/kruggsmash/playlists)

He is currently illustrating his adventures and it is nothing short of amazing. It's hard to know where to suggest starting, but basically he began his current story telling and illustration technique in Steelclutches Part 2. That's actually adventure mode, though, so it might not be the best place to start. The current series, Monster Killer, is stand-alone so you could probably start there.

However, one particular special episode it worth watching, which is the first Holiday special: [https://www.youtube.com/watch?v=uiy8zCvD_1U&t=3s](https://www.youtube.com/watch?v=uiy8zCvD_1U&t=3s)

<comment><USER3> Thanks for sharing, I just watched Monsterkiller episode 1 and it was hilarious and really entertaining.

I'm a bit lost as to what many of the sprites are, and I'm still unclear on many of the game's mechanics, but hopefully things become clearer over time.

<comment><USER2> I've been playing the game for several years and that still describes me :-). Although, he uses a custom font -- normally it would be only characters in codepage 473. He's modified it so that some of the items in the game look closer to what you might expect. Quite a lot of people like his font for the game, but personally I prefer to have just normal characters.

</comment></comment></comment><comment><USER4> A perfect time to whip out the sad story of one of my dwarves. Important to note that NONE of the details in this story are embellished, they are all simulated in-game:

I needed to tap a source of water to create a nice waterfall in my dining room. Everything was prepared: the waterfall would fall through the dining room, and then a channel under the dining room led off the side of the map through a fortification. All I needed to do was open the wall of the tunnel which was touching my water source.

Feeling too lazy to channel in from above (and slightly evil), I decided to go ahead and sacrifice a dwarf for the effort. I had the dwarf wall itself in and then open the wall. Two seconds later multiple bad things were revealed about this decision:

The dwarf was a mother carrying around her small child.

The water was under high pressure.

I had forgotten to make a floodgate to stop the water if needed.

The water shot out of the wall, instantly killing the baby and smashing the mom against the wall of the tunnel. She was dragged along by the water, fell down the waterfall and was pushed up against the fortification on the edge of the level with two broken legs and a bruised spleen. The baby's corpse was caught under the waterfall right underneath the dining room and wasn't going anywhere. The mother kept trying to run upstream but was unable to.

I felt pretty bad at this point. But thinking there was not much I would be able to do since the mother would certainly die soon anyways, I just tried to quiet my bad conscience and focus on other things, awaiting the inevitable message the mother had died.

A day later the baby's corpse started to fill my dining room up with miasma, making me have to wall out the waterfall to keep my dwarves from vomiting. Quite poetic justice, really: the stench of death was on my waterfall.

I was still waiting for the message that the mom had died. It didn't come.

After a week of game time or so I looked to see what she was doing and my jaw hit the floor. She was FISHING. The mom was fishing to stay alive while drinking the water. She was in an obviously really bad mood having witnessed death and the decomposition of her child. But she was barely staying sane because she was being "comforted by a lovely waterfall". That did it for me. I finally decided to launch a rescue mission to save her. Not 2 seconds after I had given the command to dig a tunnel to where she was, she went insane and died of thirst shortly after. I was too late.

Her name was Môsom.

<comment><USER5> >NONE of the details in this story are embellished, they are all simulated in- game

This is the crucial thing that distinguishes DF stories from LP writeups of other games. Other games provide maybe some suggestive details and you have to read between the lines. DF stories have to be pruned down from the huge amount of detail in the world.

<comment><USER6> Cataclysm: Dark Days Ahead also gives this deep simulation experience in the form of an ascii survival game.

You'll be hopped up on cocaine trying to offset the painkilling effects of the opioids, so you can maintain the necessary concentration to install a nightvision cybernetic enhancement directly into your eye, when a once domesticated hungry dog stops by and sees you as a regrettable alternative to starving. Knowing you won't survive the encounter in your current state, you throw a grenade at it just to be on the safe side. Except, you didn't throw it cause in your euphoria you decided to take a little micronap.

Or: you build a freaking TANK powered entirely by an array of solar panels. It doesn't move very fast or far given its power source, so you just let it roll forward on its own while you read a book from before the cataclysm about How to Win Friends and Influence People (in case you ever actually meet anyone). While you're reading, you accidentally crash at 5mph into a wall. You get out to repair the minor damage, and a zombie grabs you, and hundreds more are spilling out. If only you were in your tank...you bludgeon the zombie with your book and think about how to Win Friends and Influence People.

<comment><USER7> To save people some googling:

Wikipedia: [https://en.wikipedia.org/wiki/Cataclysm:_Dark_Days_Ahead](https://en.wikipedia.org/wiki/Cataclysm:_Dark_Days_Ahead)

Home page: [https://cataclysmdda.org/](https://cataclysmdda.org/)

Github: [https://github.com/CleverRaven/Cataclysm- DDA](https://github.com/CleverRaven/Cataclysm-DDA)

Stable releases: [https://github.com/CleverRaven/Cataclysm- DDA/releases](https://github.com/CleverRaven/Cataclysm-DDA/releases)

Daily builds: [https://cataclysmdda.org/#downloads](https://cataclysmdda.org/#downloads)

<comment><USER8> Stable releases are very old. 'Experimental' builds are very stable and most players update to newest build regularly. Some prefer to use a launcher for automatic updates: [https://github.com/remyroy/CDDA-Game- Launcher/releases](https://github.com/remyroy/CDDA-Game-Launcher/releases)

</comment></comment></comment></comment></comment><comment><USER9> Check out Boatmurdered for a look at how a dwarven fortress spirals into amazing and beautiful chaos: [https://lparchive.org/Dwarf-Fortress- Boatmurdered/Introducti...](https://lparchive.org/Dwarf-Fortress- Boatmurdered/Introduction/)

That version is very, very old however and doesn't reflect current gameplay style or mechanics, however the stories still unfold pretty much the same way.

<comment><USER10> For me, Roomcarnage is one of the best Dwarf Fortress stories. It's presented as a set of imgur albums, listed here: [http://www.bay12forums.com/smf/index.php?topic=139393](http://www.bay12forums.com/smf/index.php?topic=139393)

It's also a recent enough version, with gameplay similar to the latest ones, and I find the illustrations and writing style to make the whole thing very enjoyable. It might still get updated in the future, though the pace of updates has now slowed down considerably.

<comment><USER11> Given the most recent update, it seems pretty certain the next one will be the last... but I am quite curious about it.

<comment><USER12> I'm not up on DF's internals, and basic Googling doesn't really clarify to an outsider - what's so big with the current update, and why would it make the next one a final release?

<comment><USER13> I think they're talking about Roomcarnage updates, not DF updates.

</comment></comment></comment></comment></comment><comment><USER14> This article catches one of those typical moments of dwarf fortress.

A moment where you are mining through the menus of something new you haven't tried before, and then being gobsmacked by the options available to you.

In this case, when the author got to looking at his list of possible actions he finds that he has a huge list of poems he can recite.

And then you can actually recite them to the audience and have people respond to it.

By all criteria of code and project management that's just a huge waste of resources to code up.

But it is so much fun to read.

What bugs me a bit about DF stories of late is that I don't see many which engage with the new and weird mechanics the game has introduced.

Maybe I'm not looking hard enough but I've seen very few videos/gifs of dances in the game, or even people messing around to show what that bizarre musical instrument the game generated was like. (I remember something like a stone keyboard/glass organ)

</comment><comment><USER15> No Dwarf Fortress comment section is complete without a link to Tim Denee's excellent Bronzemurder and Oilfurnace.

[https://www.timdenee.com/bronzemurder](https://www.timdenee.com/bronzemurder)

[https://www.timdenee.com/oilfurnace](https://www.timdenee.com/oilfurnace)

</comment><comment><USER16> If you like the idea of Dwarf Fortress but want more sci-fi and less ASCII, check out Rimworld. The game has a similar bent towards story-telling with crazy events that befall your beloved colonists. It's far less daunting to the newcomer than DF.

That said, this diary is great. "The goal is simple: try to survive and thrive in Adventurer mode of Dwarf Fortress by relying mostly on the poetry and language skills." Oh this is going to be good...

</comment><comment><USER17> I've always been amazed by all that interactivity and depth that DF can provide procedurally. And the amazing behaviors the NPCs can exhibit. How do you program something like this? It just seems like there are so many interacting layers of complexity and nuance. Does anyone know any good sources on how one programs an NPC like this to interact in such a complex procedurally generated world?

<comment><USER18> Keep in mind that the lone developer has been continually (?) working on DF for more than a decade. I suspect that's the key ingredient.

<comment><USER19> Tarn considers DF his life's work and intends to work on it "until it's done", possibly for the rest of his life. That's dedication.

</comment></comment></comment><comment><USER20> Dwarf Fortress is so wonderfully rich and incomprehensibly dense. Plus, the patch notes are so varied that they make for some fun found poetry: [https://medium.com/@henryoz/issues-a-dwarf-fortress-found- po...](https://medium.com/@henryoz/issues-a-dwarf-fortress-found- poem-4a6c3cb33232)

</comment><comment><USER21> I don't have the patience to actually play DF, but I always love reading people's play-throughs.

<comment><USER22> Me too. I occasionally read them and try to play and the whole process just feels bad. I'm not averse to hard games, I ascended in Nethack but I think I rather just be a spectator for this one. Sort of like EVE Online.

</comment></comment><comment><USER14> This comment captures one of those moments which makes dwarf fortress.

Plumbing some odd appendage of the program, going through various menus and options and then having that moment of incredulity as you see a ridiculous set of options appear where you expect none.

In this case the op is fiddling around with being a poet.

When it comes to recite poetry, he finds his character has pre learned a large number of poetry, all of which is of course produceduraly generated.

And behind it, you see how the songs have been influenced by different cultures (the enslaved goblins, and ruling dwarf cultures)

</comment><comment><USER15> Is there a way to subscribe to this particular series, via RSS or email or anything?

edit: hm, looks like my best option is an RSS feed for the "dwarf fortress" tag: [https://www.rockpapershotgun.com/tag/dwarf- fortress/feed/](https://www.rockpapershotgun.com/tag/dwarf-fortress/feed/)

</comment><comment><USER23> Are there any roguelikes designed specifically for story generation? DCSS is probably the most playable but with the least interesting stories, DF may be the inverse.</comment>


Latent Dirichlet Allocation Surprisingly Well Correlated w/ Google Rankings - <AUTHOR> http://www.seomoz.org/blog/lda-and-googles-rankings-well-correlated

<comment><USER3> This is a good layman's introduction to modern search techniques, but to someone not in the SEO field it feels like a very strange inversion of priorities. To me, like most people, the surprise is how effective techniques like LDA[1] can be in characterizing a document, but the 'surprise' in the article is that LDA correlates to Google search order better than a more simplistic model.

To a technologically savvy but naive outsider, this might seem obvious: shouldn't pages that rank highly in Google have strong topic-based correlation to pages that the user wants to see? But from the SEO perspective, I guess the conclusion would be that your page is more likely to be ranked highly if it includes all the trappings of other high ranked pages, with, you know, like synonyms and stuff. At a certain point, one has to start thinking, wouldn't it be simpler to make a page that people actually want to find?

Are there good examples of actually useful pages that Google doesn't do a good job of ranking? I occasionally find myself lately getting frustrated with Google about ignoring my rarer search terms, but generally I find the good pages are at the top if they exist at all.

[1] LDA is Latent Dirichlet Allocation, which is very similar to Latent Semantic Analysis, which in turn is very similar to Principle Component Analysis and Singular Value Decomposition. So it's possible you've already heard of the concept, but coming from another angle in another field.

<comment><USER4> I though it was kind of odd they did LDA rather than something more broadly used (eg LSA).

But I've never really looked at LDA, and Wikipedia says: _Compared to standard latent semantic analysis which stems from linear algebra and downsizes the occurrence tables (usually via a singular value decomposition), probabilistic latent semantic analysis is based on a mixture decomposition derived from a latent class model. This results in a more principled approach which has a solid foundation in statistics._ so maybe they made the right choice. (Not that I see what "solid foundation in statistics" really means in this context)

<comment><USER5> LSA is relatively similar in some abstract sense to the published pagerank algorithm. LDA is more powerful, in the sense that it can account for more complex relationships (but may be less accurate with large number of data - <USER2> have really no idea how those would scale and compare at google-like size).

<comment><USER4> Can you explain this some more?

My understanding of LDA is that it gives you document scores against queries based on the topics extracted using the LDA algorithm on the text in the page.

Pagerank, on the other hand scores based on external pointers (ie, references) but doesn't have anything to do with the text on the page.

<comment><USER6> It's the abstract sense that is important. Pagerank is a dimensionality reduction technique. It finds the first eigenvector of the transition matrix. Eigenvectors = PCA. LSI is basically PCA, but applied to the document-term matrix. LDA is a dimensionality reduction technique that makes use of more information.

<comment><USER4> Oh, I see.

I thought you were talking about some functional similarities, not the mathematical similarities.

</comment></comment></comment></comment></comment></comment><comment><USER7> All good ranking functions are pretty correlated. There are many ways for a ranking to be bad, and few ways for it to be good.

</comment><comment><USER4> This is news? Seriously????

They have found a correlation between a set of words related to a topic you are searching for and how highly a search engine ranks that page?

Well duh! Did anyone really think search engines did a keyword search and then applied Pagerank/HITS (<http://en.wikipedia.org/wiki/HITS_algorithm>) or whatever? That would give dreadful results.

If you really want to understand this, I recommend _Building a Vector Space Search Engine in Perl_ [http://perl.about.com/b/2007/05/24/building-a-vector- space-s...](http://perl.about.com/b/2007/05/24/building-a-vector-space-search- engine-in-perl.htm)

I build the vector space classifier in <http://classifier4j.sf.net> based almost entirely on that article, even though I don't know Perl. It's very readable, and gives you a great understanding.

<comment><USER8> The news isn't that there is a correlation but that there is such a strong correlation. There are a bunch of specific techniques Google could be using and it looks likely that this is close to what they actually use.

They also use a lot of other ranking factors beyond just the words on the page so seeing such a high correlation from a "bag of words" model is pretty interesting (to me at least).

<comment><USER9> The correlation really isn't all that high.

If I've read the graph right, it's about 0.33. For a Pearson (product-moment) correlation coefficient, that would mean that about 10% of the variance in Google rankings is explained by a linear regression on LDA scores. They've actually used the Spearman (ranking-based) correlation coefficient, which is equivalent to ranking all the values of each variable from 1..N and then computing the Pearson correlation coefficient for the ranks. So, kinda-sorta with lots of handwaving, that means that about 10% of the ordering of the Google rankings is explained by the LDA scores.

Clearly that's a lot better than for the other scoring methods they mentioned, and that probably indicates that Google are doing something a bit like LDA (but this will be true for any approach that takes note of synonyms, and it's hardly news that Google do that). But it doesn't, e.g., suggest that PageRank and other things based on link structure aren't extremely important to Google's rankings.

<comment><USER6> This post should be upvoted a zillion times. The correlations they report are really quite low and as such their claims are really quite bogus.

<comment><USER8> I don't know if I saw my comment (looks like we posted at similar times). I'd be interested in your comments relative to that: there are a lot of factors this is quite a high correlation for a single one... (I think).

</comment></comment></comment></comment></comment><comment><USER10> I sometimes use LDA (using Hadoop and Mahout) and it is not an inexpensive calculation for large document sets). I wonder what the costs are for using this large scale.

</comment><comment><USER11> I'm sorry but this is overthinking something that is relatively simple to understand</comment>


/u/161719 dispels the government surveillance/"I have nothing to hide" argument - <AUTHOR> http://np.reddit.com/r/changemyview/comments/1fv4r6/i_believe_the_government_should_be_allowed_to/cd89cqr

<comment><USER2> Keep Reddit on Reddit.</comment>


Ask HN: Which U.S. wireless carrier best protects from phone number hijacking? - <AUTHOR> Given the importance of phone numbers for security nowadays, I'm curious to know which U.S. wireless carrier(s) has the best procedures in place for preventing unauthorized use/takeover of a phone number? Ideally, I wouldn't be asking this question, but many services still use SMS in their 2-factor auth process and it's scary to think that someone can take over an account by tricking a carrier's customer service agent. Any experience with this? <comment><USER2> I use a Google Voice number for this task. To me it seems more secure, and privacy of carrier SMS vs. GV is debatable. It's also "portable" so I can switch carriers and a phone's actual number without switching my 2FA phone number. I'd be interested in hearing what other people think about this.

<comment><USER3> It's not a bad idea but it definitely has downsides. For example, if your GV number is on the same Google account as your email, and you use the GV number for 2fa, then you've turned two points of failure into a single point of failure. The point of 2fa is to use "something you have access to" and "something you have" (e.g. a device). By using the same account for both steps of 2fa, you defeat the purpose of it, _in the event your Google account is compromised._ Whether that is safer than the status quo of a 2fa SMS number at a wireless carrier is up for you to decide.

<comment><USER2> Oh, I thought this would only be used only for services that do not allow other forms of 2FA. For example, my google account is protected by U2F security tokens.</comment></comment></comment>


Don't send confidential messages just before Skype crashes - <AUTHOR> http://heartbeat.skype.com/2012/07/imchat_issue.html

<comment><AUTHOR> If Skype crashes just after you send an IM, your IM may get sent to a different user when you restart Skype.

"The Skype clients impacted include: Skype 5.9 and 5.10 for Windows, Skype 5.8 for Mac, Skype 4.0 for Linux, Skype 1.2 for Windows Phone, Skype 2.8 for Android, Skype 4.0 for iOS."

How to know Skype is about to crash, so you don't say anything you'd rather not misdirect, is an exercise left to the user.</comment>


99designs: Need something designed (logo, ...)? Crowdsource it. - <AUTHOR> http://99designs.com/ <comment><USER2> Gotta love designers outsourcing their own logo design.

<http://99designs.com/contests/6884>

</comment><comment><USER3> Text from under one of the contests linked in this thread, from a designer, posted 1 hour ago:

since there is no forum here, I have to post it here. after 200 designs, seeing many of my idea's incorperated into other peoples designs, and some do it be better, but still. I have decided to leave, no more free idea's from me for the other more experienced designers. The game is over, I unsubscribe, if I can figure out how, and leave it for what it is. The site owners make money on it now (39 credits a pop) , designers got free idea's, and I make more money now locally then I ever would make here. (like zero until now.;o) ) So I bid you all a farewell, it was an experiment for me, and I must say, with a negativ result. I wish all the designers a good time here, and many profits, it was a different experience and it was fun when it was free, also for the contest holders, but for now, I am gone. cheerio.

</comment><comment><USER4> <http://www.no-spec.com/>

<comment><USER5> I think you were trying to post to the article about these "contest" sites being possibly illegal.

You know, this is a case where I think that the laws, if being broken, should be broken.

I think that these sites are more like "submitting a request for comps and receiving them" more than a "contest."

Now if people are running these "contests" and not fulfilling their end of the bargain, then they are bastards and should be caned.

But for people in developing countries with great design skills (or people in developed countries that are looking for experience) these "contests" provide a much greater potential for income that they normally wouldn't get.

I think that a lot of this whining about the legality and "morality" of these sites and contests by the establishment (in this case the design firms and professional designers) is simply a case of them being afraid of lower cost alternatives (that might be better than them!).

This may be another case of p2p and digital music vs. the recording industry and the RIAA. There will be some losers (napster) but the cat is already out of the bag.

<comment><USER4> What's the difference between this site and saying to a hacker:

"Make a web application to my specs, please. Do it a few different ways so I have options. If I don't like it, I won't use it, but I won't pay for it, either."

Some industries do follow this model (e.g. architecture, design, custom enterprise SW), but the business case for proposals/POCs/loss-leaders can only be justified when:

(# of proposals generated) x (cost of work to produce proposals) < (value of awarded contracts) - (cost to fulfill contracts)

However, with contest sites/spec work, that equation only makes sense if you value your time (costs) at close to zero, since the ratio of proposals generated to awarded contracts is so lopsided.

<comment><AUTHOR> as I've already mentioned in another post, this isn't new for programmers; It's been around for years. (Correct me if I'm wrong but Google map's origins can be traced to one) Here are a few examples:

<http://code.google.com/android/adc.html>

<http://www.netflixprize.com/>

We're still fine, and I'm not mad about it either. It's not like companies like Google and Netflix are forcing people to code at gun point. There is choice involved. If contests cause my work situation to change for the worse, then I adapt (or get lazy and become obsolete...)

<comment><USER4> Except that entries to those contests have value that isn't tied directly to the contest-giver-- android apps can be resold independently, and netflixprize entrants are developing machine learning algorithms that have tremendous value (and it's open-source, IIRC, which is a whole different kettle of fish).

In a logo design competition, the elements cannot (easily) be resold or repurposed, since they are specific to the specs of a particular client.

Also, winning one the Android or Netfliz prizes confers lots of value in terms of publicity, which can't be said of 10,000 small logo competitions.

One other note: Rentacoder, for instance, has specific rules prohibiting posting design comps or source code to prevent uncompensated work.

<comment><AUTHOR> well program submissions for contests can take weeks or months to develop... logo contests typically only last for a few days at most.

the price of entry isn't as much comparatively and again it's by choice

besides its not like u can't take off the company's name and just include the design in your portfolio. it still has some value

</comment></comment></comment></comment></comment></comment><comment><USER6> Another nice site in this contest-design space is DesignOutpost, <http://www.designoutpost.com> .

I'm often impressed with the variety of good designs which show up for just $100-300 prize money.

<comment><USER3> Yes, they were the first who started this. I used them 3-4 years ago with good results (actually, all submissions were terrible except for one, but that one was good.) I bought a good but available domain name in case I ever wanted to make their idea into a web app.

</comment></comment><comment><USER7> I would feel kinda lame making 30+ people spend several hours working for me and then not paying them anything.

<comment><USER8> You aren't making anyone do anything. They choose to participate. If they think it's a bum deal, they don't have to do it.

<comment><USER9> What ARE they thinking, though? I mean, either they are not thinking, or they should think it is a bum deal?

Some alternatives come to mind, but none compelling in the long run:

\- I need to practice anyway (but not in the long run, hopefully)

\- I am the best and I will win (ok, maybe you deserve what you get)

\- I want to be a designer, but nobody will pay me anyway, so at least I get to do my job for free (= ok, so it is a bum job, but I am a loser anyway, so I can't expect anything better).

<comment><AUTHOR> it's like saying that it's retarded to enter a programming contest, which I disagree with

Yeah I do agree that it's best for people honing their skills and experience; and for people living in low-cost places where payment in high value currency is worth it (rentacoder, elance, ...). Hell maybe it's fun for some designers like programming is fun for some programmers. What's wrong with that?

I'm still really confused over what I perceive to be antagonism towards contests (unless you own a mom & pop design firm)...

<comment><USER9> Programming contest: yes, for students it is OK, that point I mentioned ("still need to practice"). After a while it becomes pointless.

"low-cost" places: well, if they want to continue living in low-cost places, sure. But in general, even if you come from a cheap country, why should you be forced to work for little money like that, instead of doing proper consulting?

Doing it for fun: sure, if you have the time... I just think it would probably be more fun to do the same thing for real money and a real assignment. What in the "contest" makes it more fun than working for the client directly?

</comment></comment></comment></comment></comment><comment><USER10> I always use something similar to this: <http://designoutpost.com>

There's no limit on the amount of design revisions you can get - it's over when you're satisfied.

</comment><comment><USER11> What happens if none of the entries are right for you?

<comment><AUTHOR> I've never used the site, but I'm guessing since it's a contest - you pay for the best design out of the contest entries:

<http://99designs.com/help/howitworks>

<comment><USER12> Wow. I love this site just to see all the creative minds out there at work. I got so excited I submitted my own design for the stackoverflow contest...

<http://99designs.com/contests/6774>

It's #180.

</comment></comment></comment><comment><USER5> Some of these designs look really good...

Bookmarking now since the price looks to be pretty "right" too!

<comment><AUTHOR> yeah, Joel Spoelsky and Jeff Atwood thought so too: <http://99designs.com/contests/6774>

it's what brought me to the site

</comment></comment><comment><USER13> This devalues a designers time and labor. This is HORRIBLE, and no designer or programmer should stand behind it.

</comment><comment><USER14> I suppose that using a site like this allows you to get a lot of designs to choose from, but you can hire a designer (that you already know and trust) and get a bunch of mock-ups that way, too. And they will likely work until your satisfied.

<comment><USER5> My local design buddy charges $90/hr. If he keeps working until he's satisfied, then I pay for it. Plus if he gets one design stuck in his head, then it can be hard to get him to make a new design.

With this, you get the benefit of lots of people's input without an hourly "tic" as they work on it. You never know what a fresh perspective will give you!

</comment></comment><comment><USER15> Alot like <http://www.pixish.com>, eh?

</comment><comment><USER16> These sites are popping up all over the place: [http://www.killerstartups.com/Social- Networking/eLogoContest...](http://www.killerstartups.com/Social- Networking/eLogoContestcom---Design-Contest-Supersite/)

</comment><comment><USER17> Another site that does something similar is www.worth1000.com. The founders of that site are doing <http://a.viary.com/> I believe.

</comment><comment><USER18> I used Worth 1000 to run a logo contest, and it worked out well. <http://www.worth1000.com/faq.asp#C40>

</comment><comment><USER19> aka <http://www.sitepoint.com/contest/>

</comment><comment><USER20> the problem with using this site is that, your competition can only last 7 days.</comment>


Move over Samsung Galaxy S3, here comes Xiaomi M2 at $320 - <AUTHOR> http://v.youku.com/v_show/id_XNDM5Njg0Mzg4.html

<comment><AUTHOR> The first Xiaomi phone makes the company billion dollars and lots of fans in China. The second phone Xiaomi M2 will be released soon. Android 4.1, 4.3 inch 1280x720 342PPI screen, 8MB f2.0 1080p camera, 2GB memory, HSPA+.</comment>


Stop waiting for your big idea, learn to get shit done - <AUTHOR> http://www.startupnorth.ca/2008/07/04/stop-waiting-for-your-big-idea-learn-to-get-shit-done/ <comment><USER2> Ok let's do one thing. No more post about the topics below for about one month:

\- "motivational" post, (you may ask if you need it, but unless someone asks please do not freely give any for 1 month)

\- "Twitter related" post (let's let this guys Be )

\- "I quit..." (Good, here is a candy and now please go work on your Google meets Twitter killer app)

* and finally Ask "Do I really find this interesting?" before hitting Submit ( I will do this one more often myself)

<comment><USER3> Mainly applies to regular HN users? New/infrequent users will not be aware of this (without a sticky or an intro or more vocal policing!?!) so the problem will persist. Other than implementing this upon ourselves how can it be applied to others effectively?

<comment><USER4> Then it's your job as a regular to flag those posts and state the reason why you flagged it.

</comment></comment></comment><comment><USER5> Good concept, but rehashed here many times. This time lacking in details or interesting anecdotal evidence.

It is a very tough thing to do though - getting started. I am currently trying to help a friend get going and he is really struggling. After university working about 1 hour a day, and then in his career for the last few years doing the same he is struggling to put in enough hours to get anything rolling. If someone has a tutorial for that - I would definitely appreciate that and forward it on.

</comment><comment><USER6> _Stop waiting for your big idea, learn to get shit done_

That's like telling a farmer, "Stop waiting for your crops to grow; plant some seeds first."

For hackers, DoingStuff = PlantingSeeds.

</comment><comment><USER7> _To achieve great things, two things are needed: a plan, and not quite enough time._

\- Leonard Bernstein

</comment><comment><USER8> This is pretty much the most valuable advice anyone could give. Ideas are worth nothing, implementations are worth everything.

(Of course, in my broad over-generalization we have to include the fact that people who ship are people who succeed).

<comment><USER9> If ideas are worth nothing, why do we try to have good ones?

<comment><USER10> So that we'll have something to implement, thereby creating value?

<comment><USER11> I totally agree. You might have a good idea, but if you don't implement it timely or even ever, its worthless.

</comment></comment></comment></comment><comment><USER12> Yeah, we shouldn't underestimate how hard "Getting shit done." really is.

For example, I downloaded the iPhone SDK on the first day, and have been in the programme for ages, and only now do I have some actual code running, and even that doesn't do that much, except scratch a personal itch.

Scratching this itch took until well after 1am last night, and probably the same today.

No wonder my company wants me in a fabric box 9 hours a day!

</comment><comment><USER13> I agree with this point of view, but I think it could be taken the wrong way and I don't think that it should apply to all wannabe entrepreneurs. There's a fine line between a good product or driving force of a startup, and just creating shit because someone gave you a little kick in the ass...

</comment><comment><USER14> I dunno -- a few people here are tired of this kind of post, and I understand why: we seem them a lot.

But some of us need a regular asskick. So we don't mind as much.

<comment><USER11> reality checks once a while :-)</comment></comment>


Vitter's reservoir sampling algorithm D: randomly selecting unique items - <AUTHOR> https://getkerf.wordpress.com/2016/03/30/the-best-algorithm-no-one-knows-about/ <comment><USER3> > The first obstacle that makes the "dealing" (without replacement) hard is > that the "draw" method doesn't work. If you draw (with replacement) over and > over again, ignoring cards you've already picked, you can simulate a deal, > but you run into problems. The main one is that eventually you're ignoring > too many cards and the algorithm doesn't finish on time (this is the coupon > collector's problem).

I don't think this is true!

First note that if you want to pick 98 values from 100, it is much simpler to instead decide which 2 to skip. Similarly when picking 75 out of 100 - <USER2> to just cross out 25. The hardest case is picking half: N/2 out of N, without replacement.

This is the Coupon Collector's problem, except we're stopping at half the coupons. We can use the analysis given in the Wikipedia page [1], except we only take the second half of the series.

This gives an expected time of

        N * (H(N) - H(N/2))

where H(X) is the Xth Harmonic number.

In the asymptote this yields:

        N * (γ + ln(N) - γ - ln(N/2))
        = N * (ln 2)

so the expected time of the "retry on duplicates" approach is linear in N. (Of course, the worst case is infinite, if you keep redrawing the same card.)

edit: To complete the analysis, the requirement is that the answer be linear in k, the number of items selected. But we have k < N, so if we are O(N) we are also O(k) or better. So I think the argument works.

[1] [https://en.wikipedia.org/wiki/Coupon_collector%27s_problem](https://en.wikipedia.org/wiki/Coupon_collector%27s_problem)

<comment><USER4> I think it is true. We head off discussion here by referring to the naive approach, but what you're doing is past naive coupon collector's and past the technical scope of the context.

There are several steps where your method could (will) fail. Since you don't introduce any machinery for the hand, you imply an O(k^2) checking algorithm. You also imply an unsorted hand. If you generate the hand in random order, then you fall to an O(k*lg(k)) sort. "Sorted" is an implicit requirement that we initially omit, but revisit later, because introducing it early makes the discussion harder to follow.

If you try to introduce machinery like a hashtable, the next thing you might suggest, you violate an implicit O(1) additional space requirement, which I've grudgingly reintroduced to the more-formal description ("why is this here?"). This conversation keeps going, but other failure paths we leave unexamined.

<comment><USER5> In addition to not being sorted it's also not "online." You won't get the first value out of it in constant time if k is too big, and you need to access elements in a random order.

</comment></comment></comment><comment><USER6> A much cleaner, GPL-ed implementation is provided here: [https://github.com/WebDrake/GrSL/blob/master/sampling/vitter...](https://github.com/WebDrake/GrSL/blob/master/sampling/vitter.c)

(I personally find Kevin's code very hard to follow)

</comment><comment><USER7> IMO the Wikipedia article on this is better than this article: [https://en.wikipedia.org/wiki/Reservoir_sampling](https://en.wikipedia.org/wiki/Reservoir_sampling)

<comment><USER8> I only see an O(n) algorithm there, there is no O(k). Am I missing something?

<comment><USER9> Wiki shows Algorithm R, this article talks about Algorithm D, both by the same author.

The former is well known, while the latter is more obscure. This is probably because the extra complexity of Algorithm D is rarely necessary. If k and n are on the same order of magnitude, there is not much difference, and if k << n then simple random sampling would work nearly as well.

</comment></comment></comment><comment><USER10> This may be a stupid question, but what exactly is wrong with (using the dealing random cards analogy):

      for i = 1 to k
          pickedCardIndex = randomInt(n - i)
          hand[i - 1] = deck[pickedCardIndex]
          swap(deck[pickedCardIndex], deck[n - i])

As far as I can see this satisfies all conditions stated by the author (assuming that randomInt(x) produces a uniformly random integer in the range [0, x], there are n cards in the deck array, and the arrays are 0-indexed).

<comment><USER11> How do you implement swap if deck is too large to hold in memory?

<comment><USER12> mmap the deck

</comment></comment></comment><comment><USER13> Here is an alternative:

Use a multiplicative linear congruential generator with a period 2^n , where n is ceil(log2(m)), where m is the size of the list.

Seed the generator, start generating values and drop all values that are larger than m. In the worst case you will have to drop half of the values, in the best case you will drop none. This depends on how close to a power of 2 m is.

The generator is very short, one line of code, and very fast: one multiplication, one addition, and one bitshift. Space complexity is O(1).

If your tweets are generated out from an integer value, then you can use this value to generate them. The tweets will be unique (assuming the tweet generator will generate unique tweets from unique values), and you will have m of them.

<comment><USER3> This is very practical, but the result is not uniform; in fact it only returns a tiny fraction of the possible combinations.

There are "N choose k" combinations, which in the worst case (k = N/2) grows as ~ 2^N. The number of combinations quickly outstrips the number of possible states of the LCG, and most combinations will never be found. For example, we have a list of length 16 and wish to choose 8. We have a choice of 16 distinct seeds, so there are only 16 different combinations (out of 12870 possible) that we can get for any given LCG.

<comment><USER13> Good point. You would get different sequences by choosing different constants for the generator though, but you couldn't cover all of them by a longshot.

<comment><USER14> And this inability to cover all possible sequences has real-world implications.

[https://www.cigital.com/papers/download/developer_gambling.p...](https://www.cigital.com/papers/download/developer_gambling.php)

[http://superuser.com/questions/712551/how-are- pseudorandom-a...](http://superuser.com/questions/712551/how-are-pseudorandom- and-truly-random-numbers-different-and-why-does-it-matter/712583#712583)

</comment></comment></comment></comment><comment><USER15> Vitter's algorithm is for when you need to generate a random list of unique items with sequential reads. If you drop that requirement, you can just use a substitution-permutation network: [https://en.wikipedia.org/wiki/Substitution- permutation_netwo...](https://en.wikipedia.org/wiki/Substitution- permutation_network)

A SPN will generate a unique random permutation, from which you can draw your random list of unique items. With a little of post-ptocessing, you can generate random permutations of arbitrary size.

I have implemented it in matlab and python:

[http://nl.mathworks.com/matlabcentral/fileexchange/36626-alg...](http://nl.mathworks.com/matlabcentral/fileexchange/36626-algorithmic- pseudo-random-permutations-for-large-sequences)

[https://gist.github.com/jdfr/46633c630471494d67ae](https://gist.github.com/jdfr/46633c630471494d67ae)

</comment><comment><USER16> The C code in this article is a mirror of the code from Appendix 2 in Vitter's paper, which I guess explains/excuses the abbreviated variable names. The paper says things like, "use an exponentially distributed random variate Y," and uses variable names like n, N, U, S, X, y1, and y2 in the appendix.

Nonetheless, I find this coding style unreadable. "Y" is not a very good name for an exponentially distributed random variate, especially in a function that defines 24 variables with mostly meaningless names. :-(

<comment><USER17> var naming aside, the whitespacing is perplexing:

          U = random_double(); negSreal=-S;
          y1=exp(log(U*Nreal/qu1real)*nmin1inv);
          Vprime = y1 * (-X/Nreal+1.0)*(qu1real/(negSreal+qu1real));
          if(Vprime <= 1.0) break;       y2=1.0; top = -1.0+Nreal;       if(-1+n > S){bottom=-nreal+Nreal;limit=-S+N;}
          else{bottom=-1.0+negSreal+Nreal; limit=qu1;}

Sometimes two statements per line, sometimes one. Sometimes spaces before and after equals, sometimes none. Sometimes multiple ifs, breaks and statements on one line.

It looks like it was copy-pasted from a pdf. Maybe it was.

<comment><USER18> I feel like 2 seconds in an ide would have saved readability quite a bit. A simple automated cleanup would have helped worlds.

</comment></comment></comment><comment><USER19> I can't believe this article doesn't explain how it works. Especially after stating "after reaching Vitter's papers it again takes a concentrated effort to figure out what you need".

<comment><USER20> Yeah, the article was pretty dense so I just slogged through it hoping I would get to the explanation part.

Nope, it just gave me ugly c code at the end.

</comment></comment><comment><USER21> I read very often (by people who don't even use it) that Perl is a write-only language. Then i see code like this roll along that demonstrates perfectly how the readability of any given piece of code is 99% on the coder, not the language.

</comment><comment><USER22> Why cannot you just create random numbers and discard duplicates?

For practical purposes when list.length << total.lenght shouldn't that be good enough?

<comment><USER23> I had the same thought. However thinking about it more, the requirement is that this algorithm is O(k). As k gets closer and closer to the size of the list, you will spend more and more time looking for unique items. You also need to pay the costs of checking for uniqueness which also grows with k.

<comment><USER22> Well yeah, that is exactly why I said for the situation where the lenght of the list is much smaller than the total number of tweets. Which should cover most practical usages.

</comment></comment></comment><comment><USER24>
       >>> random.sample(xrange(0, 1000000000), 5)
       [5258132, 23096612, 43529214, 91062733, 4912658]

This ran in a few milliseconds on my old macbook in python. It is an iterator over 1 billion element list. Looking at the source, they seem to track previous selections for large populations in a set, for which lookup of "x in y" is avg O(1).

[https://svn.python.org/projects/python/tags/r32/Lib/random.p...](https://svn.python.org/projects/python/tags/r32/Lib/random.py)

<comment><USER25> Actually, due to seeding, no matter how many times you run this you will never generate all combinations of tweet orders. Of course that doesn't _really_ matter since for large values of N there isn't enough time in the universe to do so.

</comment></comment><comment><USER26> Could someone explain how this works? I feel like unique shuffling given a random seed is very useful algorithm, but I can't follow this code because of the variable naming and stuff.

<comment><USER27> The general idea is to draw n uniform samples from [1..N] and return them in sorted order. You can generate these incrementally, in order (no sort needed). The mean difference between successive samples is ~N/n. If the samples are uniformly distributed, their differences should have roughly an exponential [0] distribution (if N, n are large).

So the inductive step is: given k'th sample a[k], let a[k+1] = a[k] + S, where S is drawn from a discrete exponential distribution with mean 1/λ = N/n. That's the `exp(log(rand()) * stuff)' part of the code.

This _almost_ works; there's more details [1] if you want it to actually work, and have accurate statistics, not overflow N, etc.

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

[1] [https://hal.archives- ouvertes.fr/file/index/docid/75929/file...](https://hal.archives- ouvertes.fr/file/index/docid/75929/filename/RR-0624.pdf)

</comment></comment><comment><USER28> Huh, is it really true that Reservoir Sampling is not well-known? It was part of the standard curriculum in my top-30-but-not-top-10 CS school, the University of Utah. I think that even a significant subset of my cohort could explain the correspondence between this and the Fisher-Yates shuffling algorithm.

<comment><USER29> I don't even have a CS degree and I know about it. I wrote some PowerShell (don't ask) to sample a large collection of documents from file shares looking for embedded links to other documents. We needed to break up the existing file share into smaller pieces and wanted to estimate how many documents would have to be touched due to broken links. (The surprising answer was "very few", since most links were relative to the containing directory).

</comment></comment><comment><USER30> The key to why the obvious algorithm of "half a Fisher-Yates shuffle" isn't enough is that it uses O(k) memory, whereas Vitter's algorithm is constant.

[http://play.golang.org/p/UqC6XWrPLB](http://play.golang.org/p/UqC6XWrPLB)

</comment><comment><USER31> > Reservoir sampling is a family of randomized algorithms for randomly > choosing a sample of k items from a list S containing n items, where n is > either a very large or unknown number. Typically n is large enough that the > list doesn't fit into main memory.

So if N is really large and doesn't fit into main memory, how does one iterate over such large list in a reasonable amount of time? When I am taught algorithm my sample input is relatively small, from 10,000 elements to 1M integer numbers. Big deal. But I am not sure how to really think when N is really huge and whether we'd ever really have to deal with 10B integers in one pass. In that case, it's more likely I am paging through my database cursor... someone please shine light.

<comment><USER32> Basically you do a reverse fisher yates shuffle.

You are selecting n of N items, where N is unknown, in one pass, where every item is treated as unique, and where n is your sample size.

First get n items from N in an array of size n of candidates, which we'll call C.

Then, for each item k in N until you reach the end you know the current highest count, so select a random integer representing a location in an array of that count. If it's 0 to n - 1 (assuming a zero indexed array) replace the item in C with the current item k.

This means that each item will have an equal chance of being a final candidate when you reach N. If you care about order of the random sample, you can always shuffle n after you reach N.

</comment></comment><comment><USER33> GNU coreutils' shuf since v8.22 (Dec 2013) implements this to minimize memory usage when sampling large files or unknown numbers of items read from a pipe.

For example this command never finishes, but consumes a constant (small) amount of mem.

      seq inf | shuf -n1

</comment><comment><USER10> Again, I am confused. Why doesn't this snippet solve the problem?

      void increasingRandomSequence(arrayptr, base, k, n)
      {
          if (k == 0) return;
          int i = randInt(n - k);
          *(arrayptr) = base + i;
          increasingRandomSequence(arrayptr + 1, base + i + 1, k - 1, n - (i + 1));
      }

increasingRandomSequence(hand, 0, k, n) fills the array hand with a sequence which is picked with uniform distribution over all increasing sequences of length k with numbers in [0, n - 1].

This is O(k), and we can shuffle this in O(k). Why doesn't this solve the problem?

<comment><USER34> The method is on-line, that is, it doesn't need to know "n".

Assuming I translated your above code correctly into Python, as:

        import random

        def increasingRandomSequence(base, k, n):
          while k > 0:
            i = random.randrange(n - k + 1)
            yield base + i
            base += i+1
            k -= 1
            n -= i+1

then I checked the above using:

        N = 6
        counters = [0] * N
        for i in range(100000):
            for value in increasingRandomSequence(0, 5, N):
                counters[value] += 1
        print(counters)

and found a strong bias towards larger numbers. The counts are:

        [50033, 75037, 87438, 93686, 96900, 96906]

which means 5 is in the hand much more often than 0.

</comment></comment><comment><USER35> Everywhere in this article, and in all of the current comments, where the word "unique" appears, it really should be the word "distinct" instead.

</comment><comment><USER36> This may be a stupid question, but why not store cards/tweets in a hashmap and add a .contains() check before adding?

<comment><USER37> Say you need to draw a 100 bilion samples without replacement from a dataset with a trillion plus rows, the resource requirements for hashmap would become enormous.

</comment></comment><comment><USER38> Bloom filters might be a good alternative for this use case if you don't mind false positives.

</comment><comment><USER39> > generate a list of random tweets, without duplication.

Considering there are somewhere over 1 trillion tweets (over 200 billion/year), this is a very easy problem, you do not even have to check for duplicates because the chance of getting a duplicate is so small it would be statistically unlikely to ever happen.

<comment><USER40> You're making the assumption that the requested list is quite short. It should be straightforward to show that the probability of a duplicate grows with the requested list length.

</comment></comment><comment><USER41> Based on your list size, try a reasonably designed hash function here.</comment>


Canada seeks to end Uber's tax advantage over taxi companies - <AUTHOR> http://www.reuters.com/article/us-canada-budget-uber-idUSKBN16U00W <comment><USER2> The fact that they weren't paying GST is mind-boggling. The purpose of the exemption is to let someone running a tiny hobby business sell their products without having to deal with tax headaches.

The purpose of the exemption was never to let a mega-corporation take the exemption of each employee, multiply it by the number of employees, and pretend that they don't need to pay tax.

What next? A grocery store taking the $30,000 exemption for each employee working for it? A law firm taking a $30,000 exemption for each legal aide working on a case?

<comment><USER3> Uber drivers are not employees. They are independent contractors. Uber, as part of their service, collects money from riders, giving both the rider and the driver a comfort factor as they don't have to deal with cash. As "hobby" businesses they each individually were enjoying the exemption. Now they will not - because we can't have "hobby" businesses causing discomfort to the well connected.

<comment><USER4> If it quacks like a duck, it gets taxed like a duck. Uber has made a business out of exploiting legal loopholes. They know it, their users know it, the politicians know it. It's just been a race to close them. I have no sympathy for Uber in this. They obviously provide a valuable service to people, so I'm sure they'll survive. Now they'll just be competing on an even playing field.

<comment><USER5> There is no such thing as a loophole. The law is the law. Isn't every tax deduction really just a loophole? It's every company's fiduciary duty to minimize expenses using any legal means at their disposal. It's idiotic to criticize a company for using the law to their advantage. There is nothing stopping a competitor from doing the exact same thing. The law applies equally to everyone. It isn't Uber's fault taxi companies have structured their businesses the way they have.

<comment><USER4> Yep, the law is the law. Which is why the government is changing the law instead of just complaining loudly.

</comment></comment></comment></comment></comment><comment><USER6> Uber's response.

[http://www.newswire.ca/news-releases/statement-from-uber- can...](http://www.newswire.ca/news-releases/statement-from-uber-canada-on- the-2017-federal-budget-616953004.html)

One interesting note about the press release to the Canadian newswire service, it highlights that Uber was confounded by Canadian Garret Camp.

This is set to go live on July 1st so I guess you can watch the data from that point on to see if it has any effect.

> The budget statement estimates the change will raise C$3 million in new > revenue in the 2017 budget year, rising to C$5 million in the next few > years.

So this isn't really about raising money as $3 million is figuratively a rounding error.

<comment><USER7> _it highlights that Uber was confounded by Canadian Garret Camp_

s/confounded/co-founded/cg

Sorry for the nit-pick, but in this case the word _confounded_ had me genuinely confused about what this special interest group, Canadian Garret Camp, is (are they angel investors? some sort of VC incubator? a front-group for taxi companies?), and why they were lobbying for removing Uber's GST exemption.

<comment><USER8> To state that more clearly, Garret Camp is a person. He is a Canadian businessman and co-founded Uber along with Travis Kalanick.

</comment></comment></comment><comment><USER9> All of this Uber/Lyft stuff has me wondering...

Instead of making it harder to be an Uber/Lyft to match Taxis, why not make it easier to be a taxi? Driving someone around shouldn't be so complicated.

Regulation, when necessary, is good... but most of what I see around taxi regulation is just money gouging on the part of the state.

<comment><USER10> > Driving someone around shouldn't be so complicated.

Personal safety gets involved, big time, when driving someone around.

<comment><USER9> Does the safety somehow diminish when you pay for the ride?

If I give you a ride to work, for free --- then give you a ride to work, but you pay me, what is the functional difference requiring more regulation on the second part?

Is your safety affected any different? Aside from the basic protections built in to any business when it comes to collecting money, etc, what extra rules need to be in place.

From a purely pragmatic standpoint, what is different about the experience that requires all the extra crap?

For example, in many cities where they were losing the legal fight, Uber offered free rides... and were legally allowed to do so, because they weren't charging the customer. Explain to me what was different in that scenario that made it any safer for the passengers?

<comment><USER11> _If I give you a ride to work, for free --- then give you a ride to work, but you pay me, what is the functional difference requiring more regulation on the second part? Is your safety affected any different? Aside from the basic protections built in to any business when it comes to collecting money, etc, what extra rules need to be in place._

In the first instance, both parties can refuse, and can drive in any way they want. One-off rides (or paying for part of the gas in a carpool) aren't much of a worry. This is basically as safe as driving yourself somewhere. Of course, they could be a really bad driver with minimal insurance, so hopefully nothing bad happens. In addition, in these situations, you are usually on a friendly basis with the person - minimally a coworker.

Your safety is different when you start to ride with someone that does it for a living. You don't know the person, so you are trusting they know what they are doing and can drive in a way that is safe for you. The more folks drive, the more likely they are to be in an accident (this is why insurance increases with your commute). Minimally, they need to know how to combat this. I'd prefer them to have a more comprehensive driving test, including things like passenger safety and minimal regulations on driving record/background check. Unlike your friend, I'm pretty sure a taxi service has to have adequate insurance in case of an accident. Many places also have policies about pricing because of shady pricing policies in the past.

<comment><USER9> While the more you drive would statistically make you more likely to get in an accident, that still doesn't affect passenger safety. You can argue that the more you drive, the safer you drive, as well. The more experience you have driving, the more inbuilt habit/reaction you have as body memory.

The more you ride would be what affected passenger safety.

<comment><USER11> "You can argue that the more you drive, the safer you drive, as well. THe more experience you have driving, the more inbuilt habit/reaction you have as body memory"

I used to think something similar, but the truth is that the problem with professional driving isn't one of experience, but things like driver fatigue [1]. All things being equal in driving skill, the "normal" driver generally drives safer than the professional.

[1][https://www.transportation.gov/fastlane/why-we-care-about- tr...](https://www.transportation.gov/fastlane/why-we-care-about-truck-driver- fatigue)

<comment><USER9> In that document, it states over and over that the vast majority does not have a problem and is responsible.

Laws will not weed out irresponsible people.

The key points here arent that there is a potential for danger. The point is that the extra laws (which just so happen to come with a price and generate revenue for the state) don't prevent those problems.

They could pass a law requiring that drivers drive less than 40 hours a week. Does that really fix anything? Is there any way to determine that the driver who drove 10 hours this week didnt do so after staying awake for 3 days straight?

</comment></comment></comment></comment></comment></comment></comment><comment><USER12> TL;DR:

The Canadian government realized it could increase taxes by appealing to moral outrage, with terms lime "tax advantage" and "loophole". End the tax advantage by lowering taxes and reducing the size of government? Out of the question.

<comment><USER13> Reducing the size of the government's tax income does not reduce the size of the government.

<comment><USER12> I didn't claim it does. Reducing the size of government decreases the amount of money the government needs to operate without incurring additional debt. If the government were less expensive to run, officials wouldn't need to invent new ways of taking money from the people.

</comment></comment></comment><comment><USER14> Using the small supplier exemption seems really doubtful to me. That pushes the tax collection liability on the driver (who can't collect taxes, since payment is through Uber app) and the limit for that is 30k$ so a lot of drivers should probably have charged taxes since they may have earned more.

In addition, my understanding (not a tax/law person) is that the 30k$ would be for the whole fare, not the driver's cut.

GST rate is 5%... But provincial sales tax could apply, at least in provinces where there is HST (Harmonized Sales Tax, administered by fed gov, divided with province.) HST varies from 13% to 15%. I wonder if we'll see provinces going after the drivers for back taxes. Revenue Quebec is notoriously aggressive in going after people for sales tax.

<comment><USER2> > That pushes the tax collection liability on the driver (who can't collect > taxes, since payment is through Uber app) and the limit for that is 30k$ so > a lot of drivers should probably have charged taxes since they may have > earned more.

Sounds like Uber needs to update their app.

> I wonder if we'll see provinces going after the drivers for back taxes.

I'm sure Uber will do the responsible thing, stand by its drivers, and make them whole in the case that they are billed for back-taxes.

<comment><USER15> Hahaha good one.

</comment></comment></comment><comment><USER16> I like using Uber. But I also don't like the idea of money flowing out of the country/province/city into Silicon Valley. I'd much rather that the money earned by Uber stays within Canada in some form such as a tax or investment by them into our region.

Particularly because Uber-like apps are becoming important to public transportation infrastructure. Additionally, taxi revenue coming from tourism remains in the hands of Canadian taxi companies as opposed to Uber resulting in a net positive flow of money into the country.

<comment><USER17> We need a Canadian Taxi hailing app. We can make it.

<comment><USER18> You mean like this?

[http://www.itbusiness.ca/news/canadian-alternative-to- uber-l...](http://www.itbusiness.ca/news/canadian-alternative-to-uber-launces- with-backing-of-taxi-industry/62749)

Sadly it doesn't address any of the problems with cabs in Toronto.

1\. Cabs won't take credit cards by claiming "the machine is broken" when it's not, presumably so that they can avoid reporting tips or fees, or they might just skim your card.

2\. Cabs are too expensive.

3\. Cabs might not even take you if they figure the ride isn't worth it.

This app doesn't allow you to pay, so doesn't help 1. It actually make 2 worse by charging you $2 just to "hail" a cab with it. I mean, seriously? And it doesn't help with 3 either.

<comment><USER19> You may be shocked to learn these exact problems exist with cab companies everywhere in the US, too.

<comment><USER18> That's not too surprising. Though I will say that NYC cabs are pretty ok, at least I never have to worry about being able to pay with a credit card and they are actually cheaper than Toronto cabs, which really says something.

</comment></comment></comment></comment></comment><comment><USER20> What I would have preferred is that Canada removing the burden off the taxi companies and let them give competition to Uber in innovation space instead of trying to bribe politicians to act as gatekeepers.

<comment><USER19> Would you like to point to any precedents for 'unburdened' cab markets which have resulted in better service?

<comment><USER21> Have you ever been to Bangkok? I can just pay $1, hop on the back of a moto idling outside the skytrain station, and off we go lanesplitting through traffic straight to my office 2km away.

It's amazing and would be so illegal on so many levels in Canada (where I spend $1000/mo on transportation).

<comment><USER22> Why not get a moto then which would pay for itself within a month or two?

<comment><USER21> I don't follow. It only cost $2 a day to take the moto taxi between the office and the Skytrain. What kind of moto can you buy for $60-$120? And that's not taking into consideration parking requirements and the extra time it takes to drive all the way from home instead of doing most of the distance on the Skytrain.

</comment></comment></comment></comment></comment><comment><USER23> Slowly the price advantage that Uber has by using loopholes fades away.

<comment><USER24> > Slowly the price advantage that Uber has by using loopholes fades away.

They don't even always have a price advantage anymore, especially if there's a surge. I needed a cab from Chicago Midway to my hotel last night, Uber's upfront price was $48 (and an eight minute wait), a regular taxi was $40 (including 15% tip) and no wait. I took the latter.

<comment><USER21> In my experience, whenever Uber is surging enough to make cabs cheaper (2.5x in my city), there are no cabs to be found. That or the cabs try to scam you by asking for extra cash off meter (happened to me on New Year's Eve).

<comment><USER25> It's interesting that you call Uber 'surging' but cabbies doing the same 'scamming'. I understand what you're saying but they are quite comparable..

<comment><USER26> because taxi drivers cannot, at least where i live, by law, change their fare. uber/lyft told me (and i agreed by using their service) they would change the fare based on demand.

<comment><USER27> So, as long as they use the proper terminology, you're fine with being scammed.

</comment></comment></comment></comment></comment></comment><comment><USER5> Why not just cut GST for everybody? Instead of taxing Uber more, tax taxis less. Drivers and Uber still pay income taxes, fuel taxes, relevant tolls right? If they want to simplify taxes -- as they claim, the best way to simplify is simply to eliminate.

Lower fares mean more revenue for drivers and Uber and thus more income taxes collected. Removing taxes from goods, means lower prices which means you sell more and then generate more tax revenue. Laffer Curve 101.

<comment><USER28> > _If they want to simplify taxes -- as they claim, the best way to simplify > is simply to eliminate._

Because consumption taxes are the most efficient form of taxation. You want a private chauffeur? Pay up.

> _Lower fares mean more revenue for drivers and Uber_

Huh? Only if the driver is working a lot harder.

<comment><USER29> It's possible if there's significantly higher utilization to offset the decreased cost. Today a significant portion of the driver's time is waiting around doing nothing.

</comment></comment></comment><comment><USER30> The real issue here should be the abuse of the small provider provision 'hobby' tax code exemption for businesses netting <$30K that provide _ride sharing_.

Uber should fail on both of those counts, but instead the law is changing to end that exemption. This appears unfortunate to me as we could use continued innovation in the ride sharing space.

</comment><comment><USER31> Same thing is also going on in the UK: [http://www.gizmodo.co.uk/2017/03/meet- the-uk-barrister-suing...](http://www.gizmodo.co.uk/2017/03/meet-the-uk- barrister-suing-uber-to-make-sure-it-pays-vat/)

</comment><comment><USER32> Isn't this the same thing as the dispute in the UK over collecting VAT taxes?

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

</comment><comment><USER33> isn't uber still cheaper than taxi in Canada despite the application of HST now?

<comment><USER34> Aren't Uber fares subsidized by its investors?

[https://news.fastcompany.com/investors-are- paying-2-billion-...](https://news.fastcompany.com/investors-are- paying-2-billion-per-year-to-subsidize-your-uber-ride-4026256)

</comment></comment><comment><USER27> Anything that punishes Uber is fine by me.

</comment><comment><USER3> <parody>The new national budget unveiled Wednesday by Canadian Prime Minister Justin Trudeau's Liberal government took aim at document processor providers such as Microsoft Word [MSFT], to force them to collect the goods and services tax (GST) on every document created using their software. Trudeau stated, "(The Royal) we are quite disappointed that many attorneys and other value- added providers within Canada are creating documents that result in multi- million (Canadian, but still...) dollar settlements without a tax being gathered on the value those documents add to the case. Why, individual attorneys can download this software right from Microsoft, create documents worth a fortune to their clients, and not pay us a (Canadian, but still...) cent for the use of that software! Each attorney and complainant ends up having to pay us directly, and that creates awareness and complaints from taxpayers - tres horrible, I say.".</parody>

<comment><USER35> Now imagine that Microsoft Word was being used to do the selling and payment processing of those documents and it starts to make more sense...

<comment><USER36> Uber is essentially just a matcher and payment processor that takes a cut, they don't own vehicles or employ drivers - will they only have to pay taxes on their cut?

<comment><USER37> The consumer pays Uber. That is the point of sale. That is where the sales tax is collected. This isn't rocket science.

To your - bad - analogy: If MS was selling templates created in word by you to a marketplace, you can bet that GST would be paid on them by the consumer to MS.

<comment><USER38> Yup. And if you, the template provider, had a GST number (you are a business or have sales over $30k), you would also be charging Microsoft the GST for the sale. It is not a problem for MS since they would just claim it back as an input tax credit and it would be net zero for them.

Consumer pays GST to MS. MS pays GST to a GST collecting template provider. MS and template provider both pay GST to government, but MS gets an input tax credit for GST paid to template provider so that government doesn't double dip.

This is what uber should be doing with their drivers but they prefer to have prices 5-15% lower than their competition by applying their own legal interpretation to Canada's tax laws.

<comment><USER35> This is basically what happens on the Apple App Store, except that Apple submits the GST directly to the government on the behalf of the app creator. On paper it's the same as your example, it's just the GST money never actually goes into the account of the app creator.

<comment><USER37> It's likely that Apple is just forgoing the input tax credit in this case. They remit the GST on their sale and because they aren't charged any GST by the app creator, they don't look to offset.

Now, the major issue here is that if the app creator is making $30K+, it is THEIR responsibility to charge GST, which means that if there is no mechanism to charge in addition to the price, it's automatically inclusive. The CRA doesn't care how you collect the tax you owe, they just care that you pay it.

For a vast majority of app creators, $30K probably is a target they are on the lower side of, but I'd imagine people making a living on the apple store, the GST is coming out of their revenue directly. At least, that's how CRA would look at it.

Now that being said, CRA might be treating this entire industry as an undefined gray area for the time being, particularly since they are getting the GST on the final sale by apple, but I don't think that will last long.</comment></comment></comment></comment></comment></comment></comment>


Resolving Co-Founder Disputes - <AUTHOR> http://techcrunch.com/2013/01/26/resolving-co-founder-disputes

<comment><USER2> Great piece. Thanks for sharing Mike! Check out what we're up to at CoFoundersLab, <http://www.cofounderslab.com/>, a free online matching platform to help entrepreneurs find the right co-founders and build lasting business relationships.

Also, for those in LA, check out this cool workshop on Feb. 12th at Cross Campus in Santa Monica: Building Strong Founding Teams: <http://buildingstrongteams.eventbrite.com/>

</comment><comment><AUTHOR> After writing this piece and before it went live yesterday, I discovered a really interesting interview between Leo Laporte and Alexis Ohanian where Alexis shared their own co-founder dispute system at early Reddit:

[http://www.youtube.com/watch?v=GjozYFToIM4&t=959s](http://www.youtube.com/watch?v=GjozYFToIM4&t=959s)

tl;dr early Reddit used a technique mentioned: defaulting to the person with the most expertise.

<comment><USER3> Thanks this is a really good interview

<comment><AUTHOR> I agree, the whole interview is really well done and worth watching.

<comment><USER4> O hai! Thanks. It was a fun interview for me.

</comment></comment></comment></comment><comment><USER5> At TechStars, they tell you on day one that not all the teams will make it through the program intact. I've actually seen a team member leave one team for another.

<comment><AUTHOR> Same with YC. A few founders don't make it through the three months, some companies merge, others dissolve completely.

</comment></comment><comment><USER5> It's like starting a band. If you're not friends first, when friction begins, things usually get ugly. Having the mutual respect that friendship brings will give all parties better perspective on where everyone's interests lie.

<comment><USER6> I think there are two ways, or two types of band organisations that can be applied to startups. You're either a Bon Jovi or you're a U2.

In Bon Jovi, Jon Bon Jovi is the boss. He owns the company, the brand, everything. The other guys in the band are simply his employees.

U2 is the complete opposite. The band has 5 members, the 4 you see on stage and the manager (Paul McGuinness). These guys basically built their little empire based on mutual respect to each other. According to the band members it's not a democracy, it's just that the best idea is used regardless of who came up with it. In effect, their success is built around a lack of ego, or as Bono said it, the ego is the band not the individual members (ie. the result is greater than the sum of its parts).

I think both approaches will work fine, however, with the U2 approach being rare to find out in the real world but when it does occur magic happens.</comment></comment>


Why Naming Your Company Sucks - <AUTHOR> http://asack.typepad.com/a_sack_of_seattle/2011/06/why-naming-your-company-sucks.html <comment><USER2> How about generating a few hundred random words with Markov chains until you find something you like?

<http://www.fourteenminutes.com/fun/words/>

<comment><USER3> I think it's good to have a combination. But to find a good name you need some aesthetic appreciation.

</comment></comment><comment><USER4> I love naming companies. Of course, I've done it a bunch of times, so it's a familiar process. For someone who is suddenly out of their comfort zone, I can understand the frustration. A few tips:

1\. Before thinking of names, get meta. What's the company about, what would a "good" name connote, what are the ideas the name should express? Write down a narrative of all the awesome things the name should convey. If you're diligent in following this recommendation, all kinds of new ideas will emerge.

2\. Say any potential names aloud. Do they roll off the tongue, or are they awkward tongue twisters?

3\. Do your domain lookups via the command line, not some web site. It's been suggested that domain lookup sites snatch your queries and register them. True? I don't know; but you can't go wrong using Whois in your shell of choice.

<comment><USER5> I'm having this problem now, could we connect offline? Your thinking could bring me some clarity.

</comment></comment><comment><USER6> You could use a domain name generator for ideas, something like this: <http://impossibility.org/>

baconyaks.com! In some spaces, people really don't care what the company is called.

The more random the name, the more likely you are to be safe from trademarks, as well.

</comment><comment><USER7> Here's a tip: use the most obvious, phonetic (mis)spelling or you'll spend the next X years spelling it out to every yahoo who needs your address.

Eg. 'segway' not 'segue'

<comment><USER8> > Here's a tip: use the most obvious, phonetic (mis)spelling or you'll spend > the next X years spelling it out to every yahoo who needs your address.

This is a great point. Making a "phonetically accessible" name is important, especially so you can direct them to your site via word-of-mouth.

</comment></comment><comment><USER9> <http://wordoid.com> is a fun name generator if you want pronounceable words.

<comment><USER10> Wordoid is very useful. Even if you don't find a name that works, it gives you lots of ideas.

</comment></comment><comment><USER11> I empathize with you. It took my team hours just to figure out a name for our company. In fact, I think naming is one of the most challenging parts for startups.

<comment><USER12> Hours isn't bad. We deliberated on names for days to find the perfect one. In the end, we fell in love with a bastardized pronunciation of a foreign word.

I personally like using foreign words for inspiration because it's a good combination of a real world to you and a mostly meaningless word to your first market.

</comment></comment><comment><USER13> <http://nametoolkit.com> \- We use several of the mentioned approaches to provide domain suggestions.

\- The "freshfunk" method of applying prefixes and suffixes, which we call wordmixer (works well for one-word names).

\- Vowel/syllable replacement (phoneme)

\- Thesaurus (works best with word pairs)

\- domain hacks

\- ngrams (word pairs taken from a large corpus sorted by frequency descending)

</comment><comment><USER14> The article is a little over-the-top on a few points. But this obviously stems from the authors own difficulties in choosing a name. While your mileage may vary if for examples you're choosing name in English, based upon a common phrase or word you're going to be hard pressed to get the first name that pops into your head.

I found it more disappointing that someone felt the need to "review" the blog post in the comment stream for us. Even if you disagree with the post it would be far nicer if you pointed in a nicer way and the fact that it 'landed on HN' should indicate that the communicated is interested in the content.

Can anyone explain why there would be hostility against this particular author? It seems a bit out of place in this community.

</comment><comment><USER15> After a long time deciding what to name our company, we finally chose 2 consonants, they could mean anything you chose.

We however spend much more time naming our products and web services.

</comment><comment><USER16> There are two things that need to happen: 1) create a good idea for a name that fits what you're offering to your visitors/customers 2) Check to see if that name is available.

I built this domain name suggestion tool that does both of these instantly: <http://domainjig.com>

In case you're wondering, it absolutely DOES NOT hijack or steal your ideas and register your domain name behind your back.

</comment><comment><USER17> Anyone else think it's actually a good idea to name your company the same as your product?

In my case I gave up on the "company" name and instead printed business cards with the product name on them. That's all that any of our users know anyway.

Seriously, do you think most Basecamp users have any idea who 37 Signals is? Maybe they know Highrise and Campfire, but they probably think, "Yeah, those are made by that Basecamp company."

<comment><USER18> It's a key strategic decision around the concept of 'Positioning' - do you want to be positioned in the marketplace around your Product (Sprite, Fanta etc) or your Company (McDonalds). Neither is better or worse, but it is a decision to consider.

Remarkably, my grandmother calls McDonalds "Big Mac" ("as in, Jacob used to work at Big Mac"), which is proof you can have a plan and make a decision but you can't completely control how your customers view you.

</comment></comment><comment><USER19> Naming your company is easy. Just do the following!

\- append -ly, -able, -r, -up, -in, -on \- remove all vowels \- substitute k for c unless it ends in -ck in which case just remove the c... or the k \- take the last two letters and put them into the doma.in \- prepend with get- or the- \- use a sound

And, if all those fail, just buy the domain you want with .net instead of .com and buy the .com after you've raised some cash. ;P

</comment><comment><USER20> Naming a band is the most dangerous part of a new band. I have had bands nearly break up over it. Naming a startup is no easier.

</comment><comment><USER21> Every hackathon or startup weekend I do I make sure people know about <http://namechk.com> so they can check all the possible places you may want to use a name. I am not connected with them at all, I just find it makes the discussion on naming things go so much faster and smoother.

</comment><comment><USER22> Domain name: $25

Trademark search: $350

Invariably coming up with a better name six months later: priceless.

(I assume that doesn't only happen to me every time.)

<comment><USER23> Is there a reason to pay for a trademark search instead of using the USPTO website's free trademark search? Or do you only pay for that after you've already done the US search yourself?

<comment><USER22> USPTO states that their trademark database is NOT a superset of the state- level registrations and common law marks: <http://tess2.uspto.gov/>

At the least, you also need to check each of the 50 state-level PTDLs. USPTO has a list by state: [http://www.uspto.gov/products/library/ptdl/locations/index.j...](http://www.uspto.gov/products/library/ptdl/locations/index.jsp)

The other theoretical benefit of a professional search is that they are expected to research _similar_ marks as well, taking advantage of their legal expertise to determine how similar is _too_ similar. (I emphasize 'theoretical'.)

</comment></comment></comment><comment> A-K Domain sitting in particular throws a wrench in what's already a consuming enough process. I'm hesitant to admit how much time I've spent thinking about names (versus time spent thinking about core features, supplementary details, future plans, etc).

</comment><comment><USER24> Thanks for all the comments. And I'm glad to have this naming exercise behind me. I'm writing another post about the process and will give you details on tools I used.

</comment><comment><USER25> You could try to go backwards - check out a list of expiring domains and see if any match your market ;)

<http://www.namejet.com/>

</comment><comment><USER26> Totally agree. Here was our process: <http://startup-stella.com/?p=116>

</comment><comment><USER27> If name is taken up or trademarked, why not call it - TheXXX then when you've become a billion dollar company, name it the way you want: XXX.

If it doesn't become a billion dollar company, then the name does not matter.</comment>


What good is Bitcoin if the Internet fails? - <AUTHOR> https://decrypt.co/16131/what-good-is-bitcoin-if-the-internet-fails <comment><USER2> What happens to traditional banking in if the internet fails?

<comment><USER3> you go get your cash from the teller at the bank

<comment><USER4> * Can the teller process customer requests without the internet? Last time I had something done at my bank, it was clear they were just using the same online banking site customers have access to.

* What about the (slow) shift to banks that don't have physical locations in every community.

</comment></comment></comment><comment><USER5> Data will always be the most valuable asset, with or without the Internet (TCP/IP makes it easy to move, but is not required).

Once the 2-way links are available, running your own node without meshing would likely be a requirement for retail shops, miners and investors that will help grow the footprint.

If they could code liquidity modes into wallets (ie. Spendable vs not spendable modes), they could possibly limit the losses during disruptions by having wallets that are in a non-spendable state stay safe from manipulation, while only the crypto in spendable state wallets that are in circulation being vulnerable to loss or fraud during catastrophic events.

I think something like that was proposed with one of the alt-coins a few years back.

</comment><comment><USER6> In some countries I could see this being an issue, as the Internet can be shut down entirely for any number of political reasons.

In the US, if the Internet is out everywhere for an extended period of time, Bitcoin will be the least of anyone's worries.

</comment><comment><USER7> You can now sync the blockchain via satellite, and send transactions via SMS gateways

<comment><USER8> there is active project to use modified sailboat radios and old cold war transponders. I believe it is active in China and north korea to go around the great firewall.

</comment></comment><comment><USER9> this is a very interesting and good question.

for people that love decentralization... they sure are dependent on a centralized internet infrastructure.

<comment><USER10> Not to mention that majority of hashing power is owned by just few miners, most of them in China.

</comment></comment><comment><USER11> This is one of the infrequent cases in Hacker News where the article is far better than the comments (so far).

<comment><USER6> It really isn't that insightful an article. They have one source - a PR flak for a crypto company - and his solutions all boil down to "rebuild some form of Internet." An Iridium phone connected to a mesh network is just _inconvenient_ Internet access.

<comment><USER11> Launching satellites is far from trivial.

May be I am a sucker for all things space related, but that made the article interesting.

</comment></comment></comment><comment><USER12> no good</comment>