Reducing Storage Requirements of Mobile Games via Predictive Streaming (2019) [pdf] - <AUTHOR> https://engineering.purdue.edu/dcsl/publications/papers/2019/appstreamer_ewsn20_cameraready.pdf <comment><USER2> I'm not sure this is particularly novel or even desirable. Games have streamed from optical drives to ram for decades. Page files are quite old. Consoles and Blizzard games, and others have partial install/background download support in the wild.

Paging files over an internet connection works. It sucks on mobile because you just might not have internet access for an extended period of time but it works well on home devices.

<comment><USER3> The only real use case for this is applications where the data is physically too large to keep on the device. Microsoft's upcoming flight simulator comes to mind.

</comment></comment><comment><USER4> They monitor read system calls, and therefore cannot deal with memory mapped IO. Concept of caching data is very old. Not sure if this is practical. Not sure how is this better than Apple app thinning?</comment>


IRS Power to Revoke Passports Signed into Law - <AUTHOR> http://www.forbes.com/sites/robertwood/2015/12/04/irs-power-over-passports-signed-into-law/ <comment><USER2> wow</comment>


Wildtype: Lab-grown, sushi-grade salmon - <AUTHOR> https://techcrunch.com/2020/09/11/wildtype-is-opening-up-a-pre-order-list-for-select-chefs-as-it-focuses-on-sushi-grade-salmon/ <comment><USER2> Normally I hate any sort of artificial meat, but this I'm actually excited about. Fish these days have become too loaded with mercury [0]. And targeting sushi is smart of them; sushi is already so unique as a food that it doesn't even register as meat (at least to me).

\---

[0] [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC1241452/](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC1241452/)</comment>


Is it possible for aliens millions light years away to see dinosaurs on Earth? - <AUTHOR> http://spaceamazed.blogspot.com/2017/08/is-it-possible-for-aliens-living.html <comment><USER2> What if aliens use some other kind of telescopes? What if these aliens had no Galileo Galilei in their history and thus developed a very different kind of telescope say, the kind that uses gravitational lensing for optics?

</comment><comment><USER3> Note: Space and time are the same.

</comment><comment><USER3> Yes.

</comment><comment><USER4> That was hilarious, thanks for sharing.</comment>


The Impetus for the GPL: Gosling Emacs - <AUTHOR> http://developers.slashdot.org/comments.pl?sid=591803&cid=23902031

<comment><USER2> Thank you for posting this, it was well worth a read.

While few of us can manage to be as dedicated to an ideal as RMS is, having an icon who is genuinely committed around helps keep us moving in the right direction.

Certainly the web startup world owes a huge amount to the man (and every other programmer who writes open code) - how many startups would be where they are now without the boost that open source software provides?

In years when I don't make an OSS code donation I try and make a cash donation to the EFF instead. It's not so much giving to charity as making an important investment in my next independant project that would never exist if step one was paying $$$ for an IDE/compiler subscription.</comment>


The maths that made Voyager possible (2012) - <AUTHOR> http://www.bbc.co.uk/news/science-environment-20033940 <comment><USER2> As a related note, it's interesting that we (society) know the name Neil Armstrong more than Richard Arenstorf[1].

Armstrong climbed down a ladder and walked on the moon. His actions were something that could be televised. We could relate. Most of us have climbed down a ladder from a bunk bed or used a ladder to get something from a high bookshelf and then walked around a room.

Arenstorf solved a really hard math problem. Showing a person "thinking" or writing equations is not telegenic.

I think the number of people on the planet who had the mathematical creativity to simplify the 3-body problem and solve it to enable a Moon mission is less than the number of physically fit pilots that can sit in a rocket ship.

In this case, we don't remember what's more rare (Arenstorf type intellects) but what's more telegenic (Armstrong type pilots).

History will replay itself with a Mars mission. There are unsolved intellectual problems that the best scientists are working on. However, none of their names will be known as well as the first astronaut to step foot on Mars.

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

<comment><USER3> > _Armstrong climbed down a ladder and walked on the moon. His actions were > something that could be televised._

Armstrong attempted one of the most difficult maneuvers in the history of man. The reason Armstrong was the first man on the moon, other than the fact that Gus Grissom died in a fire, was because he was the only person on earth who could land Apollo 11. Did Arenstorf risk his life doing something that had literally never been done before? Did he literally take the first step into a literally unknown world that literally no human had ever been before? No? That's why people know who Neil Armstrong is.

I get what you're obliquely saying about how society values what you think are the wrong things. But you're brushing off nearly unfathomable accomplishments (it's easy to take for granted the fact that we landed on the moon when it's been true your whole life) to make a point about how a single person doing math deserves as much credit as the person who successfully landed the multibillion dollar ship built and operated by 400,000 people. Do you know the names of the countless engineers who built new technology on the Saturn V or the Apollo spacecraft then got it to work? Is Arenstorf more essential than they were?

</comment></comment><comment><USER4> Thanks! I thought I was well read into space exploration lore but this detail was unknown to me.

It seems so very often new breakthroughs happen despite entrenched systems and not because of them, through serendipitous circumstances which allow the work of individual researchers and independent thinkers to enter the production systems of established organizations.</comment>


Stages of a startup (infographic) - <AUTHOR> https://www.techinasia.com/startup-stages <comment><USER2> I'm not familiar with the Marmer model, and also don't see how it is really different from the Customer Development Model, with the exception that it puts timeframes to each stage.

I think the Funding Stages model is completely wrong. How many people are able to raise a round of funding without proving product market fit. I see it more as Financing Model might follow Customer Centric or Marmer.</comment>


OS Research Wanted - <AUTHOR> http://surriel.com/research_wanted

<comment><USER2> This isn't OS research, this is implementing oldish ideas into Linux. Real OS research would be something along the lines of an exokernel or a distributed vm based operating system akin to microsofts midori.</comment>


Happy 20th Birthday, World Wide Web - <AUTHOR> http://www.cbc.ca/technology/story/2010/12/24/tech-www-anniversary.html

<comment><USER2> They had no idea what they were letting themselves in for, had they? Still, without this day twenty years ago, we would not be doing this today.

So Merry Christmas to you all, and Many Happy Returns to the WWW!</comment>


Show HN: Yanggangs.org – Auto Generated Cohorts for Slacktivists - <AUTHOR> https://yanggangs.org <comment><AUTHOR> I'm working on a site that basically groups you into a cohort of like-minded Yang supporters and helps you accomplish simple but helpful stuff online. Things like favoriting a tweet seem tiny, but if every yang supporter did it, the difference would be huge. Especially just raising his visibility online since only half of democrats even know who he is.

Open to any and all feedback - getting people on the internet to do anything at all is insanely hard, but could be the best chance we have bots, false info and astroturfing.</comment>


Google's Python style guide - <AUTHOR> http://google-styleguide.googlecode.com/svn/trunk/pyguide.html

<comment><USER2> I don't like Google's import style, and I have noticed it in a lot of their code. They nicely namespace all of their packages and modules only to dump methods and classes into a single namespace when being imported and used.

for eg.

        from sound.effects import echo
        echo.EchoFilter(input, output)

What happens is that you then end up importing all of these methods and very quickly you start getting name conflicts. Lets say you want to support a third-party echo function:

        from sound.effects import echo
        from vendor.soundutil.effects import echo as soundutil_echo

You see this all the time in SDK and web API packages. Dozens of modules called 'auth' (which auth? twitter? facebook?) or 'oauth' or 'request'.

Lets say you have a user page that integrates with social networks, would you rather:

        from facebook.api.auth import auth
        from twitter.api.auth import twitter_auth

etc. etc. or

        import facebook.api
        import twitter.api
        ..
        facebook.api.auth()
        twitter.api.auth()

You end up either doing 'import as' hacks and a lot of renaming. Code is a lot clearer to read when you see full method names such as facebook.api.auth rather than just 'auth' and 'echo' everywhere. You also don't lose documentation paths.

My general rule of thumb is to use 'from' infrequently, never do import *, to retain the part of the path that still keeps namespacing sane and clear to the developer and as the doc says to never do relative imports.

It means you can scan any part of the code and understand what is going on without going back up to the top of the file. Also makes search/replace easier (rather than s/echo/echo_new s/sound.effects.echo/mynewpackage.echo)

The other one I didn't see mentioned is nesting levels and method lengths. Python isn't well suited to deep-nested and long methods. Especially if your coding style is to comment out blocks of code during development as you test things, you always end up commenting out parts and then having to re-indent the rest of it.

The same usually applies if you have long 'and' 'or' clauses in ifs that span multiple lines and make it harder to understand the code. I usually wrap those tests into separate methods (if you are using them once, you will probably use them again)

but for nesting, I try to stick to 2 levels max. If you go beyond that it is usually a hint that you can refactor the codepath and perhaps even separate out into another method.

I just happen to be doing this a few hours ago while writing an option and argument parser for a command line utility that has sub-commands. a quick re- factor made the code and all the different options and which options apply to which sub-commands a lot easier to understand

Edit: just further on breaking up code and bounds checking into methods, it makes life easier for other developers and for your future self. there is nothing more exhausting than trying to debug a module and finding a 3-page long method called 'run', which you end up having to break down yourself anyway. separate all the bounds checking into one or two line methods, break everything else up, document it, write some tests for it and then forget about it - that is done and it works. get on with important things.

checking nesting levels and method length is almost something I would want to put in a linter

<comment><USER3> I find it's easier to have short names, defined at the beginning, rather than clogging up my code with full.path.to.a.module. I imagine preferences vary.

What I don't understand is why they prefer:

        from thepackage.subpackage import amodule

over

        import thepackage.subpackage.amodule as amodule

I always found the second to be more clear, since it doesn't mix the idea of package-resolution with the idea of picking-things-out-of-a-module. On the down side, I end up typing "amodule" twice.

</comment></comment><comment><USER4> "List Comprehensions: Ok to use for simple cases (only)": [http://google- styleguide.googlecode.com/svn/trunk/pyguide.ht...](http://google- styleguide.googlecode.com/svn/trunk/pyguide.html#List_Comprehensions)

Really, Google? I find the following far more convenient to read:

        result = [(x, y) for x in range(10) for y in range(5) if x * y > 10]

Than the alternative:

        result = []
        for x in range(10):
            for y in range(5):
                if x * y > 10:
                    result.append((x, y))

<comment><USER5> I found the alternative easier to read. I read it once. I had to scan yours twice. I'd say yours is borderline simple case.

Also, i think part of the difference can be found when you're dealing with large amounts of code in maintenance. I'd much rather read something dead simple (if somewhat verbose) than something that makes me think at all (another example here would be (in the ruby world) use of !unless).

Like anything that has to do with taste, to each their own (i prefer a vinegary bbq while you might like a smokier bbq)

<comment><USER6> I didn't like list comprehensions when I first encountered them, but after getting accustomed to them, I now strongly prefer to write and read a comprehension over a for-in loop.

<comment><USER5> I agree, but it depends on how complex the operation within the comprehension is.

</comment></comment></comment></comment><comment><USER7> I like the idea to include a name with TODOs, like

      # TODO(qznc) check Unicode handling

This never occured to me, but it provides a good pointer whom to ask for details. On the other hand git-blame should be able to provide the same info.

<comment><USER8> I hate those. Unless you're familiar with the whole team you don't know who qznc is. Git/hg/svn blame will tell you that more precisely. Inserting your name in the comment is only slightly less annoying than people insisting to put "author"comments on top of the file (or even a function)

<comment><USER9> And you don't have an easy to find out who he is? Or mail him based on his username?

<comment><USER8> If his username matches with his email, or if he uses the it consistently - maybe. But probably he wrote that note ages ago, someone else rewrote the function since then and left the comment because the content is still valid - ie. you're contacting the wrong person.

In short: metadata which is not updated automatically is most likely not up to date, and may be not correct in general.

<comment><USER9> You can configure the linter to check for valid username.

</comment></comment></comment></comment></comment><comment><USER10> Interestingly, the Python code I've seen from Google uses 2-space indents rather than 4 as the style guide recommends. And that includes code written by Guido himself (AppStats and NDB, tools used in App Engine). I prefer 2 spaces as well, and I was hoping that the official style guide would match what's being used most commonly.

<comment><USER11> I don't mean to start yet another tabs vs spaces debate, but I've always felt spaces dictate how others see the code while tabs allowed others to see code however they like (2/4/8 spaces).

One exception is some projects are strict about lining up code properly in multi-line statements, and spaces are more consistent in that respect.

I prefer tabs, but most Python code I've seen has been 4 space indents.

<comment><USER12> I used to prefer tabs (less bytes, better abstraction etc), but I've long given up on it. Most tools are not smart enough to switch mode when required, and reformatting entire files every time you want to make a small change on somebody else's code is a real pain (and dangerous).

Community consensus is 4-spaces and that's it.

<comment><USER13> Yeah

I used to prefer tabs as well, and I still stand by it.

But you can always configure your editor to use 4 spaces. And 4 spaces looks like 'less wasted space'.

I'll keep using tabs for some things, and 4 spaces to most professional projects.

About 2 spaces I'll just say one thing: NO

</comment></comment></comment></comment><comment><USER14> Why oh why the 80 character limit? It's the 21st century, screens are huge! I'm not saying let's put the limit in 300, but 100 or 120 is good enough to fit side by side diffs in one screen.

<comment><USER13> There are 2 issues there

1 - yes, screens are huge, but it doesn't mean people can/will use small fonts or will scroll the screen

With today's big/wide screens it's more useful to have code side by side.

2 - Abuse. The 80 character limit is a pretty good indicator that you should be doing something else instead of having your code go over 80 characters.

Long lines are confusing, and you most likely can split the logic in several lines, facilitating maintenance.

<comment><USER14> I see both points but regarding (2), there are common cases where you are not necessarily doing anything wrong but the 80 character limit will make your code less readable, especially when using four spaces or more for indentation. For example you might end up in the fourth level of indentation wanting to write a list comprehension that would be perfectly readable in one line but have to break it down because of this rather short hard limit.

I think having a soft and a hard limit makes more sense, if anything, I would make 80 characters the soft limit and perhaps 100 a hard limit, although I'd prefer them to be 100 and 120.

<comment><USER15> If you're in the fourth level of indentation, you might already have a readability problem.

<comment><USER14> "Might" being the key word. You might, if you are writing a simple script, but if you are writing some more complex code, class and method already take two levels, and that is your base line, I don't see how having two more levels is a readability problem.

</comment></comment></comment></comment></comment><comment><USER16> Much as I like the general consistency of Python code with or without formal style guides, I prefer Go's "style guide" even more, which is to just run "go fmt": <http://golang.org/cmd/go/#Run_gofmt_on_package_sources>.

<comment><USER17> You could just run pep8, you know.

<comment><USER18> I'll continue surrounding "="s in keyword arguments and default parameter values regardless of what PEP-8 says.

</comment></comment></comment><comment><USER19> Weird. The recommendation for a shebang line is to use #!/usr/bin/python

That will definitely break stuff. Why not #!/usr/bin/env python?

<comment><USER2> env is nothing more than running it in a new shell, so slightly slower for each exec (since it starts a shell and then searches through PATH), may pick the wrong interpreter (because PATH is dependent on the user and a lot of other things outside of your control) and since this is all running on Google infrastructure they know what /usr/bin/python.

their goal isn't to write portable code, it is to write fast code that runs on google servers

<comment><USER20> Sorry, but I fail to see where the "env" command spawns a shell:

[http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/env....](http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/env.c?id=v8.13#n153)

Could you please explain what am I missing?

<comment><USER2> what I mean is that it is just like running 'python' in a shell, not that each instance spawns a new one

<comment><USER21> > like

One significant difference: when running python from a shell there's a fork() and an exec(). env(1) doesn't fork: there are not two processes. (In other words: the shell does not exit when you run a command, env vanishes).

There is obviously still some overhead to using env (and I just learnt from the source that env has argument processing). I tried to replicate AncientPC's test but on my machine both invocations take around 0.015s. (Perhaps their username is an indication as to why they see a (2%!) difference...).

But okay. What I really came here to say is: security. You can make all the efforts in the world to ensure that all programs get called with full pathnames but then one env shebang and you're suddenly open to running whatever's first in the user's $PATH and happens to call itself "python".

EDIT: eg [http://portaudit.freebsd.org/d42e5b66-6ea0-11df-9c8d-00e0815...](http://portaudit.freebsd.org/d42e5b66-6ea0-11df-9c8d-00e0815b8da8.html)

<comment><USER2> That last point is important which I forgot to mention, especially in operating systems that have '.' first in PATH.

I notice the difference anecdotally without measuring it, but I don't know if that is a conception bias because I know env should be slower.

The best way would be an autoconf script in your package and an install run that finds and verifies the local framework.

I have to admit that I have never done this though. I have a few Python scripts with decent distribution and just rely on the direct path (and a batch file for win32)

</comment></comment></comment></comment></comment></comment><comment><USER22> Regarding this one:

[http://google- styleguide.googlecode.com/svn/trunk/pyguide.ht...](http://google- styleguide.googlecode.com/svn/trunk/pyguide.html?showone=Default_Argument_Values#Default_Argument_Values)

I commented about this on another post. There's a nice explanation here as to why using mutable objects as default values in function/method definitions is bad:

<http://effbot.org/zone/default-values.htm>

In short, it can be bad to set default arguments to mutable objects because the function keeps using the same object in each call.

<comment><USER12> That's a classic Python gotcha, mentioned in all books and tutorials nowadays.

</comment></comment><comment><USER23> Interesting they make no reference to PEP 8.

<comment><USER17> "Interesting" isn't the word I'd use - PEP 8 is pretty clearly ratified by the Python community (more than any other style) and yet Google Knows Best

<comment><USER24> The Google style guide seems to match up with PEP 8 pretty closely, from my brief review of it. Better yet, it actually includes explicit guidance on things like 'how to name local variables and class properties' which PEP 8 is mysteriously silent on.

</comment></comment></comment><comment><USER25> > Never use catch-all except: statements, or catch Exception or StandardError, > unless you are re-raising the exception or in the outermost block in your > thread (and printing an error message). Python is very tolerant in this > regard and except: will really catch everything including Python syntax > errors. It is easy to hide real bugs using except:.

What kind of SyntaxErrors are cought by the except: handler? Not all, I presume:

      try:
        a b
      except:
        pass

This fails with SyntaxError on Python 2.7.2 on my machine.

<comment><USER26> That code is never executed because it fails to parse. I think you can catch SyntaxError if you import a file with broken syntax.

</comment></comment><comment><USER27> I wonder why pyChecker and not pyLint or pep8. Anyone got an insight?

<comment><USER9> Pylint is used internally: <http://comments.gmane.org/gmane.comp.python.logilab/1075>

</comment></comment><comment><USER28> Fun fact: Google recommend _against_ using map/reduce :)

[http://google- styleguide.googlecode.com/svn/trunk/pyguide.ht...](http://google- styleguide.googlecode.com/svn/trunk/pyguide.html?showone=Deprecated_Language_Features#Deprecated_Language_Features)

Oh, not different map/reduce? ;)

<comment><USER11> One of the nice things about using map() is multiprocessing.Pool.map() can be a drop-in replacement.

OTOH, map() does otherwise have a little overhead compared to list comprehension.

</comment></comment><comment><USER29> Wait, I thought Python WAS a style guide.

</comment><comment><USER30> The last point is definitely the most important, and applies to any language

</comment><comment><USER31> Personally, in my own code I also like to put pass at the end of all blocks. It's more consistent, and it also makes auto indent in the editors work properly. Anyone else?

</comment><comment><USER32> For an offhand comparison: Google's unofficial Ruby style guide:

<http://www.caliban.org/ruby/rubyguide.shtml></comment>


Gatwick Airport commits to facial recognition tech at boarding - <AUTHOR> https://www.bbc.com/news/technology-49728301 <comment><USER2> Q: Is there any evidence that a facial recognition-enabled boarding gate can process a line of passengers _more rapidly_ than a human can?

My (completely anecdotal) experience of the last few dozen flights is that an average gate agent - if handed a boarding pass and identity document open at the photo page - is capable in matching the name on both documents, matching the photo against the face, and scanning the boarding pass in less than 10 seconds, and the good ones can do it in 5 seconds.

Are machines actually _better_ , or merely _cheaper_ than humans?</comment>


Ask HN: Does anyone have space for a youngster taking a year off? - <AUTHOR>

I want to travel to some of the big cities, i.e., NYC, San Francisco, D.C., etc. but I can't afford much housing expenses if I did travel.  I work for a startup already and make a decent amount.  I'm not a partier and am pretty chill.  I am taking a year off from school and am getting all the real world experience I can.<p>I could pay some and trade work or whatever else for the rest.  Just thought I'd see what kind of options I could get.  :) <comment><USER2> <http://www.couchsurfing.org/> is an excellent resource.</comment>


Ask HN: How developers in enterprises and startups can spend money? - <AUTHOR> When developers need something (hardware, software, support from 3rd party etc.), who would be making a call and allocate a budget for it? Do developers and teams already have budgets that they can freely spend on whatever makes them productive?<p>I'm curious about the structures and procedures that different companies have. <comment><USER2> It depends on the company, the nature of the expense, and the amount of the expense.

A fairly common arrangement at startups is a purchasing card, which is typically held by a team lead (for larger startups) or the founders/finance folks (for smaller ones). If you need anything, you put it on the p-card. There is generally minimal oversight on "anything" and the limit for a single expense is fairly low ($500 is common, with $1,000 and $250 being probably the next most popular).

If it doesn't fit on a p-card, things get interesting and _quite_ varied per company. For example, a company might have a rule "Devs get to buy their own laptops" with the informal understanding that they're $3k or so, but at the same time _not_ be willing to allow a dev to individually decide to buy e.g. a $3k server. That might be budgeted separately and/or controlled by another process within the company. A dev (or team lead) _might_ have authority to sign off on a one-off $3k expense without elaborate justification required, but it would have to go through purchasing to actually get paid (on a check).

There exist companies which allow employees reasonable discretion to purchase work-related necessities on their personal credit cards and receive reimbursement, typically on a backwards looking monthly basis, after running receipts and/or CC statements past the company bookkeeper. This is very common for sub-$50 purchases like "Bought a pizza for the team because they stayed late" or "Took a prospective hire out to coffee" or "Needed some printing done at Kinkos." Most companies would probably prefer that employees _not_ put SaaS on their own credit cards.

Enterprises are another kettle of fish with regards to processes. In general, lots and lots of scar tissue builds up around this question, and you can pretty much tell who has abused them in the past by what questions they need answered to approve a purchase.

John Sheehan sensibly remarked once that "I need a $25 a month SaaS to do my job. Explain to me the process for getting it. Does that change if it is $250 a month?" is a great question for a candidate to ask when feeling out a company for whether they're desirable to work for or not, since it predicts a whole host of control/micromanagement issues.

<comment><USER3> Well said. I agree with this.</comment></comment>


Ask HN: What to do if a domain registrant is uncontactable - <AUTHOR>

Long story (vaguely) short, there's a domain I'd like to buy that's currently not being used and hasn't been used properly pretty much since it was registered (based on the Wayback Machine at archive.org).
I already have a hyphenated variant, but would like the non-hyphenated version too, for a slightly better user experience.
I'm happy to make an offer to buy the domain from the current owner.
The whois gives me contact details for them, but the email address bounces, the registered company doesn't appear to exist (at least, any more), and the phone number goes to a voicemail message that sounds like a pocketdial.
Short of driving up there (about 100 miles) and knocking their front door, I'm wondering what else I can do.
The domain was renewed earlier this year (and is one of 70 or so others, I gather), so I'm guessing it's someone who bought and didn't use it, or who is deliberately keeping it to sell on, but if no one can contact them, that's a bit of a problem...
Any suggestions, beyond me getting in the car? <comment><USER2> Send them a letter. You have an address, after all! 100 miles should get covered in under a week.

If you want to be obnoxious about it you can even have them sign for it.

<comment><USER3> Also consider sending it certified or with delivery confirmation and/or return receipt. But keep in mind that the level of interest you display in your attempts to get in touch may also increase their asking price of the domain.

</comment></comment><comment><USER4> I would inform the registrar that the email information in the WHOIS is incorrect.

I would also send a polite letter, in my experience that can get the ball rolling.

My gut says that if they have 70 domains registered, it's likely you'll have to pay an arm, a leg, and your firstborn for the domain. Good luck!

</comment><comment><USER5> Contact the registrar. If they cannot get the details of the registrant then they will be the ones most likely to advise you further.

If its been recently paid for the the registrar has bank or credit details in the registrant at the very least.

<comment><USER6> All domain owners are required to maintain current and working contact details. Not doing so is grounds for the registrar to cancel their registration. Contact the registrar to inform them that the email address bounces.

I think they will probably inquire about the postal address, so I would try mailing a letter as well.

<comment><USER7> I recommend not being a jerk about it. Endangering their registrations is not going to put you in a good bargaining position. The registrar is happily being paid for these domains, and just because an address bounces for you doesn't mean it bounces for everyone (unless it's an unknown user). In any case, these issues are easily resolved in the registrant's favor, and they're not going to be in a good mood if you spoil their day. If you can't get a reply, pick another name and move on.

Also keep in mind that not all domains are used for the World Wide Web. I regularly get inquiries about domains I own because "they aren't being used" when, actually, they are critical to my infrastructure and just don't have any web sites associated with them.

</comment></comment></comment><comment><USER8> They are not obligated to reply to you in any way. While the registrar can technically cancel the registration because of an invalid email addr, I don't know of a single registrar who will. Certified mail is the best way to contact them, but again if they aren't looking to sell don't expect a reply.</comment>


The Zoomquilt - Perpetual Zoom in HTML5   - <AUTHOR> http://www.zoomquilt.org/

<comment><USER2> It may be perpetual, but it does loop. Now of course if it were a fractal, you could dive forever :)</comment>


Show HN: BitMidi – Wayback machine for old-school MIDI files - <AUTHOR> https://bitmidi.com/ <comment><AUTHOR> Hey HN, site author here! So, the context for this site is that I was reminiscing about the days of Geocities and Angelfire, back when the web was quirky and fun. I remembered how sites used to use the <bgsound> tag to include an autoplaying background MIDI file. Those files had such a nice, old- school aesthetic.

I wanted to hear some MIDIs, so I searched and found a .zip file with 100K+ MIDI files that someone posted to Reddit. I tried playing a few in Chrome, Firefox, Safari, etc. and then realized that they've all dropped the <bgsound> tag. Even Quicktime and VLC couldn't play back the files.*

There were some websites that could convert MIDI to low-quality MP3, and technically Apple still offers Quicktime 7 for download which can play MIDI, but it wasn't easy or fun to do.

Some websites offered inline playback with Flash (but it was flaky and hard to get working in Chrome), and the JS-based ones were missing many instruments or multi-MB Emscripten-compiled monstrosities!

I decided that I'd compile the best MIDI player written in C (libtimidity) to WebAssembly and put in lots of effort to optimize the bundle and include the minimal amount of code. The result of that is here: [https://github.com/feross/timidity](https://github.com/feross/timidity) It's quite lightweight - just 34 KB of JavaScript and 23 KB of lazy-loaded WebAssembly.

Then I put a frontend on it, so it's easy to browse that .zip file's contents. And that's BitMidi.

I plan to ingest a lot more MIDI files in the future, perhaps from the Geocities MIDI archive on the Internet Archive.

Feedback welcome!

* I later learned that VLC can actually play most MIDIs and I just got unlucky with the few I tried! That's okay though – I got to learn a lot about MIDI files, Emscripten, WebAssembly, and modern front-end web techniques. And I made a cool site too :)

<comment><USER2> So awesome!

<comment><AUTHOR> Thanks Jim, I appreciate the positive feedback.

</comment></comment></comment><comment><USER3> wow this is amazing! lovin the old school game tracks and also the way you built it. curious what it was like in the way of webAssembly and any performance issues you may have run in to. have heard some experiences that span a very wide love/hate spectrum.

<comment><AUTHOR> Thanks! I found WebAssembly to be a joy to use. I mainly interacted with Emscripten and it worked great. One thing is that by default it produces a bundle with more JS that you probably need if you just expect the code to run in the browser. You can see what build flags I used to make the built JS super small: [https://github.com/feross/timidity/blob/master/tools/build.s...](https://github.com/feross/timidity/blob/master/tools/build.sh#L6)

Hope this helps!

<comment><USER3> thanks! will definitely check it out sometime soon hopefully!</comment></comment></comment>


MessagePack: Fast and Compact Serialization - <AUTHOR> http://msgpack.org/

<comment><USER2> For perl it's fast as long as you have a small payload. Here's my benchmarks using progressively bigger data structures.

        perl: 5.008008
        Storable: 2.21
        JSON::XS: 2.25
        Data::MessagePack: 0.34

        ==== Size ====

        .</comment><comment></comment><comment>-----+</comment><comment>-----+</comment><comment>---+</comment><comment>---.
        | src             | storable  | json    | msgpack |
        +</comment><comment></comment><comment>-----+</comment><comment>-----+</comment><comment>---+</comment><comment>---+
        | 1               | 4         | fail    | 1       |
        | 3.14            | 8         | fail    | 5       |
        | {}              | 7         | 2       | 1       |
        | []              | 7         | 2       | 1       |
        | [('a')x10]      | 37        | 41      | 21      |
        | {('a')x10}      | 14        | fail    | 11      |
        | +{1,+{1,+{}}}   | 29        | 14      | 7       |
        | +[+[+[]]]       | 19        | 6       | 3       |
        '</comment><comment></comment><comment>-----+</comment><comment>-----+</comment><comment>---+</comment><comment>---'
        </comment><comment></comment><comment></comment><comment></comment><comment>==

        Testing: theirs:HASH (4995 bytes)

        ==== Serialize ====

        Benchmark: running json, mp, storable for at least 1 CPU seconds...
              json:  1 wallclock secs ( 1.14 usr +  0.00 sys =  1.14 CPU) @ 26947.37/s (n=30720)
                mp:  1 wallclock secs ( 1.11 usr +  0.00 sys =  1.11 CPU) @ 70446.85/s (n=78196)
          storable:  1 wallclock secs ( 1.06 usr +  0.00 sys =  1.06 CPU) @ 18442.45/s (n=19549)
                    Rate storable     json       mp
        storable 18442/s       --     -32%     -74%
        json     26947/s      46%       --     -62%
        mp       70447/s     282%     161%       --

        ==== Deserialize ====

        Benchmark: running json, mp, storable for at least 1 CPU seconds...
              json:  1 wallclock secs ( 1.02 usr +  0.00 sys =  1.02 CPU) @ 23424.51/s (n=23893)
                mp:  1 wallclock secs ( 1.02 usr +  0.00 sys =  1.02 CPU) @ 35136.27/s (n=35839)
          storable:  1 wallclock secs ( 1.06 usr +  0.00 sys =  1.06 CPU) @ 25357.55/s (n=26879)
                    Rate     json storable       mp
        json     23425/s       --      -8%     -33%
        storable 25358/s       8%       --     -28%
        mp       35136/s      50%      39%       --

        </comment><comment></comment><comment></comment><comment></comment><comment>==

        Testing: xdbi:HASH (24138 bytes)

        ==== Serialize ====

        Benchmark: running json, mp, storable for at least 1 CPU seconds...
              json:  1 wallclock secs ( 1.06 usr +  0.00 sys =  1.06 CPU) @ 2414.15/s (n=2559)
                mp:  1 wallclock secs ( 1.07 usr +  0.00 sys =  1.07 CPU) @ 8373.83/s (n=8960)
          storable:  1 wallclock secs ( 1.06 usr +  0.00 sys =  1.06 CPU) @ 7244.34/s (n=7679)
                   Rate     json storable       mp
        json     2414/s       --     -67%     -71%
        storable 7244/s     200%       --     -13%
        mp       8374/s     247%      16%       --

        ==== Deserialize ====

        Benchmark: running json, mp, storable for at least 1 CPU seconds...
              json:  1 wallclock secs ( 1.11 usr +  0.00 sys =  1.11 CPU) @ 4842.34/s (n=5375)
                mp:  2 wallclock secs ( 1.13 usr +  0.00 sys =  1.13 CPU) @ 4324.78/s (n=4887)
          storable:  1 wallclock secs ( 1.05 usr +  0.00 sys =  1.05 CPU) @ 4654.29/s (n=4887)
                   Rate       mp storable     json
        mp       4325/s       --      -7%     -11%
        storable 4654/s       8%       --      -4%
        json     4842/s      12%       4%       --

        </comment><comment></comment><comment></comment><comment></comment><comment>==

        Testing: pdf:HASH (35239 bytes)

        ==== Serialize ====

        Benchmark: running json, mp, storable for at least 1 CPU seconds...
              json:  1 wallclock secs ( 1.04 usr +  0.00 sys =  1.04 CPU) @ 9845.19/s (n=10239)
                mp:  1 wallclock secs ( 1.05 usr +  0.00 sys =  1.05 CPU) @ 5119.05/s (n=5375)
          storable:  1 wallclock secs ( 1.10 usr +  0.00 sys =  1.10 CPU) @ 7518.18/s (n=8270)
                   Rate       mp storable     json
        mp       5119/s       --     -32%     -48%
        storable 7518/s      47%       --     -24%
        json     9845/s      92%      31%       --

        ==== Deserialize ====

        Benchmark: running json, mp, storable for at least 1 CPU seconds...
              json:  1 wallclock secs ( 1.08 usr +  0.00 sys =  1.08 CPU) @ 3110.19/s (n=3359)
                mp:  1 wallclock secs ( 1.07 usr +  0.00 sys =  1.07 CPU) @ 2790.65/s (n=2986)
          storable:  1 wallclock secs ( 1.08 usr +  0.00 sys =  1.08 CPU) @ 3554.63/s (n=3839)
                   Rate       mp     json storable
        mp       2791/s       --     -10%     -21%
        json     3110/s      11%       --     -13%
        storable 3555/s      27%      14%       --

        </comment><comment></comment><comment></comment><comment></comment><comment>==

        Testing: globallib:HASH (197319 bytes)

        ==== Serialize ====

        Benchmark: running json, mp, storable for at least 1 CPU seconds...
              json:  1 wallclock secs ( 1.09 usr +  0.00 sys =  1.09 CPU) @ 1760.55/s (n=1919)
                mp:  1 wallclock secs ( 1.06 usr +  0.00 sys =  1.06 CPU) @ 791.51/s (n=839)
          storable:  1 wallclock secs ( 1.05 usr +  0.00 sys =  1.05 CPU) @ 1279.05/s (n=1343)
                   Rate       mp storable     json
        mp        792/s       --     -38%     -55%
        storable 1279/s      62%       --     -27%
        json     1761/s     122%      38%       --

        ==== Deserialize ====

        Benchmark: running json, mp, storable for at least 1 CPU seconds...
              json:  1 wallclock secs ( 1.71 usr +  0.00 sys =  1.71 CPU) @ 301.75/s (n=516)
                mp:  1 wallclock secs ( 1.03 usr +  0.00 sys =  1.03 CPU) @ 404.85/s (n=417)
          storable:  1 wallclock secs ( 1.12 usr +  0.00 sys =  1.12 CPU) @ 544.64/s (n=610)
                  Rate     json       mp storable
        json     302/s       --     -25%     -45%
        mp       405/s      34%       --     -26%
        storable 545/s      80%      35%       --

</comment><comment><USER3> In node.js, JSON is actually faster than msgpack: <https://github.com/aikar/wormhole/issues/3>

Also, due to V8's poor C++ API, msgpack doesn't support deserialization of 64 bit integers.

<comment><USER4> > Also, due to V8's poor C++ API, msgpack doesn't support deserialization of > 64 bit integers.

JavaScript _does_not_ have a number type wide enough to hold 64-bit integer. V8 API has nothing to do with it.

</comment></comment><comment><USER5> This sounds an awful lot like yet another ProtocolBuffers. What, if anything, new does it bring to the table?

<comment><USER6> This is schemaless. Protobufs require a .proto file that describes the data being serialized. A .proto file serves a similar purpose as the `struct` keyword in C.

MessagePack uses type prefixes to describe the data. For instance an unsigned 8-bit int starts with a `0xcc` followed by a byte.

</comment></comment><comment><USER7> We use this as data exchange format for our RPC services at Shopify. Incredibly fast, stable, easy to use.

</comment><comment><USER8> Is this actually better than gzipped JSON?

<comment><USER9> This appears to be mmap-friendly. Since arrays have length values it's possible to jump around in a large messagepack-serialized structure without having to scan it. In JSON if you want to get to element 2 of an array you have to scan to the end of element 1. If there's a length value at the beginning of element 1 (as it looks like there is with msgpack) then you can seek straight past it.

</comment></comment><comment><USER10> Does it have it suitably low memory/CPU requirements to run on embedded devices?

How well does it work on ARM/MIPS?

<comment><USER11> It works very well at least on ARM.

I've used MessagePack on iPhone 3GS for the format of a dictionary file (> 100MB). I utilized mmap and zero-copy deserialization feature of MessagePack. And I received (and merged) some patches sent by those who use it on iPhone4/iPad2.

I've never tried to run it on MIPS. But it probably works if you use gcc.

(I'm author of MessagePack)

</comment></comment><comment><USER12> Would be nice if suuport for RPC (and generally) for Erlang was better. It's "currently" in alpha.</comment>


Infographic: How Foursquare Grew 3400% in One Year - <AUTHOR> http://www.fastcodesign.com/1663093/infographic-how-foursquare-grew-3400-in-one-year <comment><USER2> Another disingenuous headline from Fast Company. This doesn't show you "how" at all. Just shows you the ingredient info, not the recipe.

<comment><USER3> Meh, its still a good infographic.</comment></comment>


The man behind the million dollar homepage 11 years later - <AUTHOR> http://www.bbc.com/capital/story/20160914-the-man-behind-the-million-dollar-homepage <comment><USER2> If not for this guy, my life would probably have been totally different. It's silly, but the Million Dollar Homepage was definitely one of the motivating factors that got me into web development. After seeing his page I had every intention of making some ridiculous, gimmicky advertising ratings site or something and making millions of dollars with ease. Then I decided it would make sense to get some experience first, before I dove right into it, so I decided to make a simple little tool for my own use first. THEN I'd make the "real" site (ie the doomed gimmick site). Turns out my throwaway test idea was actually useful to people though, and it grew into an actual business that I'm still running 10 years later.

<comment><USER3> That's amazing. What's the actual business?

<comment><USER4> It's in his profile: [http://www.searchtempest.com/](http://www.searchtempest.com/)

<comment><USER2> Ha, ya, although I left out the get-rich-quick aspirations in my profile!

At the time I was a poor grad student and was shopping for a portable AC unit to survive the summer in my sweltering apartment. There were about 5 craigslist sites within driving distance, and I was checking all of them, since saving 20 bucks was easily worth an extra hour of driving at that point. :) Figured a simple thing to learn some basics would be a page that would just spit out the links to multiple craigslist results pages matching a given search.

I literally went to the library and got a book called something like, "Basic web development using PHP and MySQL". The initial site was... very basic. Before I made it I'd looked around for existing solutions, and so when it was done I replied to the few forum threads I'd found, where people were looking for the same thing. It basically grew organically from there. (And over time I made it _somewhat_ less basic. Although the design is looking pretty dated at this point; we're currently working hard on a long-overdue responsive redesign.)

A couple years later I made (an early version of) [http://www.autotempest.com](http://www.autotempest.com), which is like kayak.com for used cars. Then around 2009 I quit my day job and hired my first employee. Have been doing this ever since.

<comment><USER5> This is incredible, I've been using your site for 5 years and I've always wondered "i wonder how much this site profits per month"

Any way I can get this half decade long question answered? :)

<comment><USER2> Glad you like the site! It makes enough that I can keep investing in improvements, while support my family comfortably and saving for a rainy day.

<comment><USER6> I've always wondered who created that site. I've used it to search for cars and parts for years! Thanks! :)

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> _But Tew was the first to do it, which left a lot of people wondering why they didn't think of it first._

Lots of people thought of it, but discounted it because it was a dumb idea, missing one crucially important ingredient: page-views. Anybody can put up a web site, it's getting people to look at it that's hard. And once people are looking at it, it's easy to sell ad space. What no one could have known, including Tew, is that the story was going to get picked up by the media, which would generate his page-views for him. Nowadays, lots of people are trying to hack the concept of virality, which despite the name is really more a matter of climbing the media hierarchy rather than spreading in some kind of peer-to-peer manner. You get picked up by a few small tweeters or bloggers, then by bigger tweeters and bloggers, and then by major media, and---voila! You cash in and look like a genius. But everyone else is trying to do the same thing, and no one has a repeatable recipe for virality, so in the end it's largely a matter of luck.

<comment><USER8> I remember this at the time -- Tew invested the initial earnings he made (<£2,000 IIRC) from selling ad space to friends and family into buying media coverage, which kickstarted the whole thing.

So whilst he was lucky, he did kind of make his own luck by putting the money into it -- he could have just taken that money and sat on it.

<comment><USER9> I seem to recall reading that Tew spent up to 20% of his targeted million dollars on PR[1]. Which would suggest that he had a very good understanding of page views being the important ingredient, a good story for traditional media being important (more so at the time) to get there, and more faith in what he was doing than anyone else that had the idea of creating a pure web page billboard.

[1]IIRC it was discussed in Paul Carr's _Bringing Nothing to the Party_ , which isn't exactly complimentary about Tew

</comment></comment></comment><comment><USER10> "Fast-forward 11 years and Tew is still doing things differently than most [...]. Today, he lives in San Francisco, [...] and is founder and CEO of start-up Calm, which offers a mobile app"

At least on HN this wouldn't be seen different at all.

Wikipedia retells the story of the million dollar homepage: [https://en.wikipedia.org/wiki/The_Million_Dollar_Homepage](https://en.wikipedia.org/wiki/The_Million_Dollar_Homepage)

<comment><USER11> He comes from Wiltshire. SF is very different.

'bucolic' is the only word I've heard to describe the village I grew up in.

</comment></comment><comment><USER3> I always wondered how he got that site running in the first place. I had my own similar "dumb idea" that I created: [http://www.ipaidthemost.com](http://www.ipaidthemost.com), but I have no idea how to get it out in front of people, even though folks tend to react well enough when I show it to them.

<comment><USER12> I had a similar "dumb" 1 million dollar idea, but with a emoji money and a Twitter bot called Terence: [https://twitter.com/helpterence](https://twitter.com/helpterence)

Sofar he has raised almost 8000, but I'm also looking for a way to get it out there!

<comment><USER13> Love silly twitter bots like that. This is adorable!

<comment><USER12> Thanks, I appreciate it!! They're a lot of fun to create as well, you never know how people are going to interact with them.

And I really hope that some day Terence's campaign really takes off without me really noticing it.

<comment><USER14> What's the story behind the staying low from the "twitter police"? [https://twitter.com/helpterence/status/774672966961561600](https://twitter.com/helpterence/status/774672966961561600)

<comment><USER12> Twitter is pretty strict when it comes to bots and apparently they didn't like Terence's behavior(automatic following, lots of similar replies) and his tweets were no longer showing up in peoples timelines (replies).

</comment></comment></comment></comment></comment></comment><comment><USER15> I have been using Headspace and Calm.com. While the services are valuable, I have hard time justifying buying a subscription with a monthly cost for something that is basically some guided meditation mp3.

Compare buying a meditation book with a few guided meditation track for 20$, or subscribing to an app with a recurring cost of 70$/year, I don't really see the added value.

Can someone shed light on what I am missing ?

<comment><USER16> [Disclosure: I'm CTO at Calm]

With Calm, there's new content every single day with our Daily Calm meditation. We've got more daily content coming soon too.

In addition to the content people also like us for our tracking features and daily reminders, which people consider valuable.

<comment><USER17> Ironically, the completionist in me would be stressed out knowing there's new content waiting for me everyday. I'd feel compelled to listen to the day's new audio track before it has a chance to pile up over a week, which makes for good business, but would personally stress me out and ruin the whole point of Calm and similar mindfulness services. I'm probably just a weirdo edge case, though :]

<comment><USER16> You're definitely not a weirdo edge case, I think we all feel something like that around email, facebook notifications etc, and it's something we very consciously want to avoid in our product.

Each Daily Calm session is available for that day only, so you either listen to it or you don't. If you do come back to the app every day there's something fresh for you if that's what you'd like (you can of course to a regular session too). If you don't use the app on any particular day, no big deal, there's no backlog of content for you to stress about catching up with!

<comment><USER18>
       > Each Daily Calm session is available for that day only,
       > so you either listen to it or you don't.

I'm really not in the target audience at all, but doesn't that make the situation described by the parent commenter _worse_?

"Agh! Better listen quick or it's gone forever!"

<comment><USER19> At least there's no worry about the ever-increasing number (and increasing time-investment) of missed episodes to catch up on.

I say this as the guy who wakes up in the morning with 500-800 overnight missed tweets, and then patiently reads through them.

<comment><USER20> That sounds awful.

<comment><USER19> It's a time-consuming but relatively harmless foible.

I guess it's partly FOMO, partly habit, and partly the slightly positive aspect of following a routine. There are the odd days when I just skip them all, but it does leave me slightly irked.

All in all, it's not the worst thing in the world, although I wouldn't be upset to grow out of the habit.

<comment><USER18> I used to do that; then I realised the way I was using Twitter wasn't scalable, stopped, and realised Twitter wasn't for me.

I still have it, but mostly just use it to contact customer service departments - seems to be the most painless way these days.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER21> Only 11 years. It seems like it was older. I guess it seems like such an idea of the late 90's internet, I just associate it with that era.

</comment><comment><USER22> This is a great PR play -- leverage the founder's origin story as a hook for the real point: promoting the app.

<comment><USER23> We need a more intelligent adblock that spots and blocks things like this :)

<comment><USER20> It would then block hacker news for promoting YC, right?

</comment></comment></comment><comment><USER24> The company I worked for at the time this site gained notoriety would field several calls a week from individuals and companies both wanting to have a clone of that site built thinking they would achieve the same level of success. About the same time I had an investment group contact me, via a close friend, to build them a Match.com clone, except their time frame was 3 months with a budget of $15k. I told them that they lost their damn mind. Didn't hear from them again. People are dumb!

</comment><comment><USER25> I've always sort of been inspired by his project, and how powerful crowdsourcing can be.

We built a physical version of the million dollar homepage using 3D printing and crowdsourcing. A few thousand pieces were printed around the world and mailed to us for a crowdsourced sculpture: [https://www.flickr.com/photos/printtopeer/sets/7215763613331...](https://www.flickr.com/photos/printtopeer/sets/72157636133314925/)

</comment><comment><USER26> My get rich quick scheme is to run a site called penis-length-registry.com, where insecure people who want everyone to know how well hung they are can publicly register their penis length, and I'd charge them by the inch (using a freemium model: the first inch is free, with additional inches progressively priced, and special "grow it now" bonus packages, plus there's a monthly subscription fee to keep it from shrinking). Also their friends and admirers could buy them "gift inches", and users could play with themselves or compete with each other using a Flash based MMORPPG online pissing contest! All that's required to verify is a valid credit card number, and they can buy their way onto the top-10 leader board. Then I could sell ads for Hummer H2's, Steve Martin's All Natural Penis Beauty Cream [1], fashionable Italian designer brand Ausilium Orchidometers [2], and other high priced vanity products like that. All I'd really need was one rich tiny-handed narcissistic whale like Donald Trump, and I could retire!

[1] [http://www.nbc.com/saturday-night-live/video/steve- martins-p...](http://www.nbc.com/saturday-night-live/video/steve-martins- penis-beauty-creme/n10590)

[2] [https://www.amazon.com/Ausilium-27337-Orchidometer/dp/B00F37...](https://www.amazon.com/Ausilium-27337-Orchidometer/dp/B00F37FJA6)

</comment><comment><USER27> BBC uses an iStock image in their article, complete with watermark? Seriously?

<comment><USER19> The watermarks are also on the other images that they've licenced from Getty, and the unwatermarked image is credited to the photographer.

I'm not sure that there would be all that much value in creating new images for the story though, if a cheaper stock image can communicate the same thing.

<comment><USER27> My point is that they should either have real, relevant photos or no photos at all. Not just filler garbage that has nothing to do with the article.

<comment><USER28> In a local newspaper, I once saw an article about some gang members being arrested for making and distributing fake coins that were worth some $5 in my country, and there was a huge photo of a coin with this caption: "A legit coin"

</comment></comment></comment></comment><comment><USER29> Calm seems interesting, though not something I'd want to do with my phone (even though I get the appeal of it being everywhere). Wouldn't mind an AndroidTV app so I can do it at home, sitting on my carpeted floor, in the relative darkness, in front of a TV.. rather than squinting at a phone

<comment><USER30> You only use the screen to start a session and it's better with headphones

<comment><USER29> Ah, the pretty pictures shown as demonstrations of the app led me astray!

</comment></comment></comment><comment><USER31> I just used calm at work and then read this right after. Weirdest coincidence I've had in recent times. I couldn't have imagined this guy is doing Calm in a million years.

Thank you for pivoting this way. Its such a great app. Love the daily stuff to keep it varied and exciting to come back to.

</comment><comment><USER32> Lesson learned: it's not the complexity of an idea that will make it valuable.

</comment><comment><USER33> There's something quite ironic about paying for a smartphone app in order to relieve the stress and anxiety induced by our society.

And also the fact that there is a billion dollar mindfulness industry.

</comment><comment><USER34> So pretty much a long winded advertisement for his company.

<comment><USER10> For me the key take-away is that he couldn't recreate his success later.

"First, he tried Pixelotto, a spinoff of the Million Dollar Homepage selling advertising space, then PopJam, a social network for sharing funny content, and One Million People, similar to his first success, just with photos instead of advertisements. None succeeded the way he hoped."

<comment><USER35> If you win the lottery and think it was because of something you did, well...

<comment><USER36> Well, in this case if was because of something he did.

The initial page idea was great and almost inevitable to succeed: cute when you hear about the concept, very easy to implement, almost sure to attract media attention (and have stories bring in more interest), etc.

So, in a sense, the lotto was coming up with this idea, not that the idea succeeded.

The problem is that his other attempts where either rehashes of the same but with no novelty factor anymore, or not that interesting in the first place.

</comment></comment></comment></comment><comment><USER37> I remember reading the blog and thought it was cool how the story progressed.

</comment><comment><USER38> Wonder how many of the links on this page are still active.

<comment><USER39> At least one is still going strong (I worked there at the time they bought in).

</comment></comment><comment><USER26> I'm working on my second million.

I gave up on my first.

</comment><comment><USER40> is the "lifetime" subscription just a hail-mary money-grab?

<comment><USER41> I expect it is one of those strategies that allows you to channel buyers toward your preferred pricing structure. e.g. 1 month = $10, 3 months $20, 1 year $75, lifetime $250.

In this example you really want to sleep at $20 for 3 months, so your $75 for a year is for customers convenience, the 1 month for $10 is there so people see how good value it is to get a 3 or 12 no the subscription, the lifetime is there so people who get a year subscription don't think they are taking the most expensive option.

<comment><USER19> There's also the effects of price-anchoring and price-bracketing: $20 may look expensive compared to $3 or $5 or $10, but stick it up against $75 and $250, it appears to look more reasonable.

It's exactly what you're saying: the $250 option isn't intended to sell people on lifetime subscriptions, it's designed to make the $20 product look reasonable.</comment></comment></comment>


Rwanda Built a Drone Delivery Service - <AUTHOR> https://www.youtube.com/watch?v=jEbRVNxL44c <comment><USER2> This is great. I'm always like stories about how technology solves problems in developing areas.

</comment><comment><USER3> Very well thought project, and they use small planes 12KG.</comment>


Buzz Aldrin's Answer To The Louisiana Oil Spill - <AUTHOR> http://www.disinfo.com/2010/06/buzz-aldrins-answer-to-the-louisiana-oil-spill/

<comment><USER2> Maybe I missed something, but how exactly is this transmitted to Earth, and how efficient is the transmission?

<comment><USER3> Microwave or lasers, moderately efficient.

See the discussion at: <http://en.wikipedia.org/wiki/Space-based_solar_power></comment></comment>


Sexual Freelancing in the Gig Economy - <AUTHOR> http://www.nytimes.com/2016/05/15/opinion/sexual-freelancing-in-the-gig-economy.html?_r=1 <comment><USER2> The article talks about how romantic relationships have always been seen in a economic light, e.g. "Why buy the cow when you can get the milk for free?". She then compares the "flexible" nature of work now to how people choose at- will relationships.

No discussion of true sexual freelance gigs on the internet, which is too bad because that's a fascinating topic.

<comment><USER3> Right? I thought this was going to be about live cam performers. This article was about nothing.

<comment><USER4> I thought it was about a new "ride sharing" service, where people prostitute themselves instead of selling rides in their car for uber.</comment></comment></comment>


Prodigy vocalist Keith Flint dead at 49 - <AUTHOR> https://boingboing.net/2019/03/04/prodigy-vocalist-keith-flint-d.html <comment><USER2> Sad.

Can't imagine the world without his music. Influenced so many other musicians.

Ready for some 90s nostalgia?

* The Prodigy - Breathe (Official Video) - YouTube || [https://www.youtube.com/watch?v=6_PAHbqq-o4](https://www.youtube.com/watch?v=6_PAHbqq-o4)

* The Prodigy - Voodoo People (Official Video) - YouTube || [https://www.youtube.com/watch?v=YV78vobCyIo](https://www.youtube.com/watch?v=YV78vobCyIo)

* The Prodigy - Firestarter (Official Video) - YouTube || [https://www.youtube.com/watch?v=wmin5WkOuPw](https://www.youtube.com/watch?v=wmin5WkOuPw)</comment>


Getting intentionally denied access to the US - <AUTHOR> http://travel.stackexchange.com/questions/24540/how-to-intentionally-get-denied-entry-to-the-us-without-getting-into-trouble

<comment><USER2> funny how the second answer links back to a discussion on Hackernews: [https://news.ycombinator.com/item?id=7311780](https://news.ycombinator.com/item?id=7311780)</comment>