Facebook Tries To Silence Lamebook: Removes Its Page, Blocks Links And Likes - <AUTHOR> http://techcrunch.com/2010/11/22/facebook-blocks-lamebook/ <comment><USER2> You can't even send private messages that have a lamebook URL. At least Facebook makes it obvious that we shouldn't trust them with private communication / Facebook Messages.

<comment><USER3> What makes this frustrating is how few people care.

<comment><USER4> That is not exactly frustrating. Not everyone thinks of their privacy in the way people at HN do. And I have made my peace with it. Actually I see the point, why would I be so worried about facebook reading something which I would not be worried if someone overheard it while I was talking on the subway.

<comment><USER5> It has nothing to do with privacy, it has to do with Facebook censoring messages. What if you couldn't send an email with a link to a questionable site? That wouldn't bother you at all?

<comment><USER6> No-one likes spam, but I've noticed that at least some email providers do this by domain/ip address of the emailed link in order to combat spam. Maybe its different since it ends up in your spam folder, but its effectively the same result.

Details: I've had a website that got hit once by this, which was funny because we never even sent any email. When testing it out, it seemed to be being filtered by the ip address the link resolved to. Even if I changed the domain name I emailed, if it resolved to the same ip, it still was being marked as spam. Note that this was being tested from a 3rd party email, not by sending from our own mail server.

<comment><USER5> Interesting, I wasn't aware of this happening. Unless they had a setting to disable it, my initial reaction is that I'd disagree with those email providers blocking domains/IP addresses too.

I do think, though, that there is an easily identifiable difference between blocking obvious spam sites, likely based on autonomous algorithms, and (I presume manually) blocking a site towards which you clearly have ulterior motives.

</comment></comment></comment></comment></comment></comment><comment><USER7> Though little consolation for their current trademark lawsuit from Facebook, this offers a huge marketing opportunity for Lamebook. Slap a gigantic "BANNED ON FACEBOOK!" stamp over the logo and play up the antagonism.

<comment><USER8> Google could certainly make their own innocent "mistake" and have Lamebook be the destintation for "I'm Feeling Lucky" for those who can't remember the url for facebook.com.

<comment><USER9> That would be a sad waste of the trust that users have built up for Google.

<comment><USER10> Google "Where you can find Chuck Norris" and press I'm Feeling Lucky...

Or back in the day with "Miserable failure" going directly to George W. Bush's page.

These things have happened before.

<comment><USER11> scalyweb was implying that google do it intentionally.

your examples occurred because of link bombing.

</comment></comment></comment></comment></comment><comment><USER12> This is Bret Taylor, CTO of Facebook.

This was a mistake on our part. In the process of dealing with a routine trademark violation issue regarding some links posted to Facebook, we inadvertently blocked all mentions of the phrase "lamebook" on Facebook. We are committed to promoting free expression on Facebook. We apologize for our mistake in this case, and we are working to fix the process that led to this happening.

<comment><USER13> Thanks for posting this explanation. I am curious about that part:

> inadvertently blocked all mentions of the phrase "lamebook" on Facebook.

Inadvertently seems to imply that this was not voluntary, more like the result of some "misclick". Is that so? Are there such powerful control tools at Facebook which use is not under strict review? If it was inadvertent, I think there ought to be serious policy revision regarding the use of these big brother tools at Facebook ;)

<comment><USER14> Hypothesis: Thousands of people around the world mis-flag content for a variety of reasons every day. One of the outsourced content-reviewers working for a consultancy hired by facebook made a mistake in handling the copyright infringement flag, and blocked the site. It wasn't noticed by anyone until the TechCrunch story went up.

</comment></comment></comment><comment><USER15> If I were Lamebook I'd be registering hundreds of silly lame/facebook related domains per hour and offering them as alt urls to use via Facebook. Make the 9-figure-valuation company dance and jump for a scrappy joke site, nothing will make a mockery of them faster.

<comment><USER16> If anyone wants to do this, the code GOBBLE will get a $1 .com with godaddy, first 15k uses only.

<comment><USER17> Is that a reference to GOBBLES, by any chance?

<comment><USER18> What the heck is GOBBLES? Do you mean Goebbels?

<comment><USER17> GOBBLES is a trolling/security outfit of sorts. They've given talks at Defcon but as far as I know their members are basically anonymous.

</comment></comment></comment></comment></comment><comment><USER19> At what point does a site become "big enough" that it becomes a marketplace monopoly which is not legally permitted to discriminate?

Obviously all sites have a right to control/filter content, but I wonder if there is some law that a giant site must abide by some stricter rules of equal participation ..

<comment><USER20> Enforcing one's trademark does not constitute "discrimination".

Facebook is in the right here. Lamebook is clearly an attempt to cash in on the Facebook name, trademark law does not permit that, trademark law is correct here. Merely being "the little guy" doesn't make you right or give you carte blanche to ignore whatever laws you want.

<comment><USER21> Parody and commenting about something and humor and so forth is protected as fair use even under our horrendously fucked up "intellectual property" system.

Now, I think Facebook has the right to block whatever links they want to block on their own website. It's their website and they should do what they want that they feel is in their own self-interest.

Casting this as Lamebook doing something that violates Facebook's trademark is incorrect without any actual evidence that they are indeed violating Facebook's trademark.

Merely having a name that rhymes with Facebook isn't enough to call that a violation of Facebook's trademark.

<comment><USER20> You cited defenses against copyright infringement. There is no parody exemption that I have ever heard of that applies to the active use of a trademark. You can certainly create yourself a "Lamebook" to use in, say, a web comic, and make it even look exactly like the actual Lamebook page, and nobody would blink, just like nobody blinks at a Sorny in a web comic. But you're not allowed to _actually do business_ as Sorny!

I have evidence that Lamebook is violating Facebook's trademark. There's the name. There's the fact that their logo is clearly a Facebook hand, only reversed. There's the fact they're in the same basic industry and a realistic chance that Lamebook could be reasonably confused to be connected to Facebook by a normal person. I'm not sure what other evidence you're expecting, a signed affidavit from John Roberts?

<comment><USER22> >There's the fact they're in the same basic industry and a realistic chance that Lamebook could be reasonably confused to be connected to Facebook by a normal person.

The basic industry is the web? That is a stretch. Does that mean anything else is in the basic industry of "physical things"?

Facebook is in the industry of social networking, while Lamebook is a 'lolpics' site targeted at funny things FROM Facebook. It seems like they are clearly doing what Facebook says they are (attempting to piggyback on brand recognition), using satire as a hook to get away with it.

Whether they will succeed I think depends on Facebook's ability to show that this use will harm their name / confuse their customers, and that seems doubtful. In a similar instance, Toys `R' Us successfully forced Guns `R' Us to change names; the case was made that parents would think that Toys `R' Us had a chain of gun stores!

<comment><USER20> [http://avvo.com/legal-answers/can-i-trademark-a-similar- name...](http://avvo.com/legal-answers/can-i-trademark-a-similar-name-in-a- different-indu-69533.html) , just to yank something out of Google very quickly.

The law is not unfamiliar with your objection. In point of fact it has dealt with this question rather frequently. And no, your made up pathological case has no ground in the law, and no, I do not think the law would slice and dice Facebook and Lamebook into separate industries. Separate industries are, as the link says, things that can not possibly be confused for each other, like a tax service and a farming implement company, not "a web-based social network" and "a web site for satirizing social networks".

Taking your point to its logical conclusion, two companies _always_ differ on some irrelevant dimension; the ability to find some trivial difference will not protect you. It's the usual thing I think we computer programmers tend to forget when arguing about law... you have to convince a _judge_ you're not in the same industry. It's not a computer algorithm that can be gamed with a bit of pathological input and a loudly-yelled "TAKE THAT!", despite how it may sometimes appear.

Though your last paragraph entirely confuses me; you express doubt about the court case going in Facebook's favor, then cite an example that I think is actually sillier than the idea that Facebook might spin off a site or two?

</comment></comment></comment></comment></comment></comment><comment><USER23> One thing which mystifies me about this whole situation is that Facebook arguably benefits from Lamebook's presence. Lamebook isn't a substitute for Facebook, it's a complement to Facebook. Someone who enjoys Lamebook for its humor will probably try extra-hard to find entertaining scenarios among their own Facebook friends, meaning that Lamebook increases Facebook's usage. Why you'd want to shut down a company that gives you more traffic (and therefore revenue) for a relatively unimportant and legally dubious reason is beyond me.

Not to mention, of course, the fact that Facebook is already invoking the Streisand effect by going after Lamebook at all.

<comment><USER24> I can only guess someone at facebook thinks it's not good if their brand get associated with lameness.

</comment></comment><comment><USER25> Good job Facebook. I had never heard of Lamebook before... today.

</comment><comment><USER26> C'mon guys, everybody knows it's wrong to take a bunch of info and photos from one facebook site and re-purpose them on another.

 _Mere hours before lamebook was hacked together:_

"You are probably going to be a very successful computer person. But you're going to go through life thinking that girls don't like you because you're a nerd. And I want you to know, from the bottom of my heart, that that won't be true. It'll be because you're an asshole."

/irony

</comment><comment><USER27> Why is Facebook getting distracted with this? Facebook has so much going for itself, why censor a 2 men company and cause all the negative PR?

<comment><USER28> They have turned over the company to business people and lawyers.

<comment><USER29> Even if they hadn't, they did the right thing here. Note that Lamebook struck with the lawsuit first. It would've been easy enough to ignore Lamebook and just go after bigger trademark infringers on a case by case basis, but since Lamebook struck first, they actually had to strike back, because if they allowed that lawsuit to declare that Lamebook doesn't infringe on the Facebook trademark, there would be 200 <something>-book sites tomorrow created by copycats, and Facebook would be powerless against any of them because of the Lamebook judgment.

</comment></comment></comment><comment><USER30> This is very unsettling. BUT, I was able to share the TC article about lamebook on my wall. As long as there is still someway to voice dissent, even if it is through a thirdparty site.

</comment><comment><USER31> They did the same with my profile too. I wrote something relating to frastu- facebook user and they disabled my account.</comment>


Google Glass was prototyped in one day - with chopsticks - <AUTHOR> http://glass-apps.org/google-glass-prototype <comment><USER2> GMail and Google Now were also prototyped in one day, as was Linux. The hard part is the years of refinement that come after that.

I guess the lesson to take is that _big working systems are built on small working systems_. You don't get a big system by envisioning the final result, finding someone to fund you, and getting lots of people to build it for you. You take the smallest possible first step, see if it works, and then learn from it and expand it.

<comment><USER3> What does 'prototyped in one day' mean in the context of Gmail? Was it just the UI (arguably the most important part in this case) or was it a minimal but functional POP3/SMTP/IMAP client?

I'm not doubting you claim, just wondering about the scope of it.

<comment><USER2> Paul Buchheit has more details in his Founders at Work interview, but basically the first version of GMail was a Perl script that grabbed his e-mail inbox and stuffed it into the Groups indexing engine, so that other people could search his e-mail. Version 2 was to let it search over _their_ inbox instead of his, and Version 3 added the ability to send e-mail.

<comment><USER4> So it wasn't a "prototype of Gmail" so much as a hack that got people starting to think about storing mail on google technology stack.

It's really funny, that this is the story of the the beginning of Gmail, when the part of Gmail that caught the whole world's attention was the AJAX web UI. I had always assumed Bucheit was a DHTML whiz. Storing and indexing mail already was rather old hat.

Wait, is this a part of Gmail? "other people could search his e-mail." o_O

<comment><USER5> > _So it wasn't a "prototype of Gmail" so much as a hack that got people > starting to think about storing mail on google technology stack._

That's the very definition of a prototype. Prototype != early version of a product. For one, it's often written in another stack, to make it easier to iterate. Second, it's more often than not, thrown away on the road to the actual product code.

> _Wait, is this a part of Gmail? "other people could search his e-mail." o_O_

Well, maybe not people, but their Ad serving service can surely search your email.

</comment></comment></comment></comment></comment><comment><USER6> > ... we actually discovered something pretty fundamental that never been > discovered about glasses, period

This is how companies get patents on obvious things. They didn't discover this.

I've been wearing glasses for nearly 30 years and have known for most of that that you can press down behind your ears and the weight seems to all disappear. Your ears don't notice it much, but your nose does.

</comment><comment><USER7> Seems a bit of a bother to use chopsticks and the fishing line contraption. Since it's to test what the user experience is just get another person to watch the users gestures and click or touch the computer that's powering the display to translate those gestures in to pre defined actions. Would let you test all sorts of crazy things.

</comment><comment><USER8> Oh, the text is a transcript. I was very confused to be looking at text saying "And here's what it looked like." with no images in sight.

</comment><comment><USER9> Interesting point about glasses in general. I wonder if there would be a market for small weights that attach to the arms behind the ears to make glasses feel lighter.

</comment><comment><USER10> Interesting thing here: Google Glass could end up proving to be a really influential product, one that changes a lot of social patterns and app design.

This article seems to suggest that the core UX work could be replicated in a day, just by having normal engineers playing with clay and having a rough idea of what they want.

So, it seems to me, we must ask ourselves: how could you possibly justify patents for such a thing, given how simple it is to come up with?

<comment><USER11> > _how could you possibly justify patents for such a thing, given how simple > it is to come up with_ //

Patents are awarded on novel inventions. An argument goes that if a particular invention were so simple then why hasn't anyone done it already? Motivation, ability, recompense?

One response is the right-place, right-time, etc.. That's basically the answer that everything would be invented at some point.

However the patent system has an answer to that too - the disclosure of the invention is key to gaining the limited monopoly. Earlier disclosure, as the premise goes, is beneficial to the people of the state granting the monopoly. Thus even if the invention is simple - provided it's not "obvious" [in the domain specific meaning of the term] - then the reward is still being provided for a benefit.

<comment><USER10> But we then look at the fact that, for something that can take a _single day_ to come up with, do we really think a limited monopoly of five or ten years is worth granting?

I think not. In fact, I think that the culture of hacking which has done so much good for this world pretty much demands immediate and unfettered access to the opportunity to play with these ideas.

<comment><USER11> > _unfettered access to the opportunity to play with these ideas._ //

Generally patent law allows unfettered access for personal or research purposes, including commercial research, but limits commercial exploitation.

So with [high quality] patents you get access to a vast database of knowledge which would otherwise be locked up in commercial secrets.

<comment><USER12> That's the theory. In reality, how many patents are "high quality"? And how many people actually read them to find ideas, rather than to find ways to work around obstacles?

</comment></comment></comment></comment></comment><comment><USER13> Sorry to go off topic, but interesting to see "subscribe via feedly" instead of Reader and "Notify me..." via email done through MailChimp (RSS to Newsletter) instead of Feedburner. Still makes me sad but good to see alternatives starting to be put out there.

</comment><comment><AUTHOR> "doing is the best kind of thinking" epic quote

</comment><comment><USER14> My last chopsticks prototype was a "ultra-lightweight" tone-arm for an old turntable back in college, haha. I think it yielded significantly less useful results than this. Good ingenuity!

</comment><comment><USER15> If you can prototype something in one day, that version is so brain dead as to not be any benefit as far as lessons leaned. That said, the "prototype" will still have promotional value.

<comment><USER16> I think the idea here is that by creating and using some simple physical models they were able to learn things that they wouldn't have thought about if they had kept everything in their heads. Even making a virtual model wouldn't have given them the user-experience information that they were looking for.

</comment></comment><comment><AUTHOR> chopsticks??? I need to beef up my prototyping!

<comment><USER17> that is something I must learn. (/does a Mae-Pae beard curl) lol.

Anyways on a serious note, I for some reason, feel that though google glass would be a hit product, the concept is still lacking something important. I don't know what, but for some reason, I don't see myself, sticking to it, beyond a certain period of time.

The Attention aspect is being overlooked as well, no matter how good it can make our life, it would still require a lot of attention from me, like a heavy mental application of sorts.

<http://www.visualexpert.com/Resources/lawsofattention.html>

<comment><USER18> >feel that though google glass would be a hit product

This will be a very interesting test of Collinridge's Dilemma.

</comment></comment></comment><comment><USER19> chopsticks??wooww!

</comment><comment><USER5> > _Google Glass was prototyped in one day - with chopsticks_

And it shows. <http://www.youtube.com/watch?v=bcYppAs6ZdI>

Come to think of it, still, I'd rather put chopsticks in my eyes than Google Glass. <http://www.youtube.com/watch?v=bcYppAs6ZdI></comment>


Amazon lost $3.18M on last week's Lady Gaga promotion for its MP3 store - <AUTHOR> http://www.businessinsider.com/guess-how-much-money-amazon-lost-on-the-lady-gaga-promotion-last-week-2011-5

<comment><USER2> Two problems with this "analysis": 1) does anyone know if Gaga charged Amazon full price? and 2) marketing spend is usually not refered to as a "loss".

</comment><comment><USER3> 'lost' or 'spent'?</comment>


Audio over Bluetooth - <AUTHOR> https://m.habr.com/en/post/456182/ <comment><USER2> I wish there were more technical write ups as such in the music space!</comment>


Apple Platform Security - <AUTHOR> https://support.apple.com/guide/security/welcome/web <comment><USER3> > When a device goes missing and can't connect to Wi-Fi or cellular—for > example, a MacBook left on a park bench—it begins periodically broadcasting > the derived public key Pi for a limited period of time in a Bluetooth > payload. By using P-224, the public key representation can fit into a single > Bluetooth payload.

This is clever, and the reason Apple chose P-224 specifically.

</comment><comment><USER4> One of the things Apple is known for is taking technology and delivering an integrated solution that is super easy for the non-technical user to use. Apple has done the same with security. If you are a normal user that is not being actively targeted by a nation state, just buying and using a Mac or an iPhone with the default options results in a pretty secure by default scenario.

<comment><USER5> Unless you use Siri, in which case random contractors might listen to anything you intentionally or unintentionally say to Siri.

<comment><USER6> Source on this?

You couldn't pay me to use a voice assistant, much less would I _ever_ have a voice assistant in my home (Dear God, it scares me that people do this) - <USER2> AFAIK Siri doesn't do this like Google does.

<comment><USER7> [https://www.theverge.com/2019/8/23/20830120/apple- contractor...](https://www.theverge.com/2019/8/23/20830120/apple-contractors- siri-recordings-listening-1000-a-day-globetech-microsoft-cortana)

The end result of this was, Apple brought the operation in-house and it's also now opt-in.

<comment><USER8> Are "in-house" listeners supposed to be an improvement?

<comment><USER9> "it's also now opt-in."

I believe this is the improvement you are looking for.

</comment></comment></comment></comment></comment></comment><comment><USER10> PDF version: [https://manuals.info.apple.com/MANUALS/1000/MA1902/en_US/app...](https://manuals.info.apple.com/MANUALS/1000/MA1902/en_US/apple- platform-security-guide.pdf)

</comment><comment><USER11> Yes I buy a lot of Apple stuff. Yes I think its more safe. But honestly, I think they only emphasize safety and security to differentiate from Facebook, Google and Microsoft. In the end this is only about marketing. To pump prices and margin. I still feel (ab)used, only in a different way.

<comment><USER12> Because they are making something you want?

</comment></comment><comment><USER13> I used to appreciate the security features of Apple products until it began to interfere with my freedom.

I'm telling this after wasting tens of hours to install a linux, any linux to my iMac Pro without success.

<comment><USER14> After, I don't know, maybe one ten of hours, wouldn't it make sense to check online and see what the situation with the T2 chip is?</comment></comment>


Pi ("π") may be full of hidden patterns - <AUTHOR> http://www.businessinsider.com/pi-day-patterns-2017-3?r=US&IR=T&IR=T <comment><USER2> As a transcendental number, PI will theoretically contain infinitely many numeric 'patterns'.

OMG, look, there's "0123456789"!!! Who knew!</comment>


ASP.NET myths debunked, more or less - <AUTHOR> http://www.mikeborozdin.com/post/ASPNET-Myths-Busted.aspx

<comment><USER2> I think this should be written as a "Law." All sufficiently powerful software languages/frameworks are misunderstood by those who have never really used them.</comment>


Ask HN: How to read data directly from a flash chip? - <AUTHOR>

I'm an electronics novice (more of a software guy really) but need to dump the flash off an embedded device. It's surface mounted, and the device itself is bricked.
What is a good method to go about this? Are there any flash-dumping-as-a-service companies anywhere? If I need to do this myself, what pitfalls can I expect and what equipment do I need?
The chip is a EN29LV640B btw. <comment><USER2> First thing to do is have a look at the datasheet <[http://www.eonssi.com/upfile/p200892917341.pdf>](http://www.eonssi.com/upfile/p200892917341.pdf>). I was hoping that it'd be SPI or I2C, but it's a big parallel flash, so reading it is going to take some hardware.

Comes in two packages a TSOP and a BGA. I'm hoping you have the TSOP. If you've got a TSOP, you can get a socket for it / probe it. You can probably also get a socket for the BGA but you might be paying out the nose.

I like the JTAG approach as well. Assuming it's connected to a processor or FPGA that's got boundary scan, even if the rest of the system isn't cooperative you can bitbang the contents of the flash out using the JTAG hardware.

The JTAG silicon - even if it's on the same die as the processor / FPGA is totally separate. It's something like a tiny state machine. Read up on it, really powerful. <[https://en.wikipedia.org/wiki/Boundary_scan>](https://en.wikipedia.org/wiki/Boundary_scan>)

Another option is to transplant the interesting flash from the dead device to an identical working device. Use the working device to read out the contents of the memory. This will require some soldering skills.

Or.. you can pull it off the board, and get a programmer. The industry std is Xeltek but they're $$$$. I've got a TL866, works pretty well. <[http://www.eevblog.com/forum/blog/eevblog-411-minipro- tl866-...](http://www.eevblog.com/forum/blog/eevblog-411-minipro- tl866-universal-programmer-review/>)

Or.. you can read the datasheet and build yourself something with an arduino. You'll run out of pins though, so maybe a pro? or maybe port expanders.

Good luck!

<comment><USER2> Some more info - openocd is a not bad open source JTAG server. <[http://openocd.org/>](http://openocd.org/>)

The TL866 I suggested does support your part.

If you've got the flash in a TSOP - another trick for getting at the flash is to find a FPC cable that has the same pitch as your TSOP and solder it down on the board. FPCs with varying pitches are available at Digikey etc. That way you don't have to remove the flash from the board.

</comment></comment><comment><USER3> It will all depend on the PCB assembly & design. If that is still somewhat functional or even if you think it is bricked, you may still be able to recover the flash through the processor. I have had to deal with a PCB Design that utilizes the AtMega 1284p processor and if the clock flag(s) get set wrong it is "bricked" but can be reset and functional again. Like you I am not a hardware engineer but have written my share of firmware although it always helps to have a hardware guy with some design/debug experience around.

Either way, if you have never dealt with the hardware part it might take you a little bit but you can figure it out. I suggest you start with the processor data sheet and familiarizing yourself with JTAG. That is usually your saving grace, at least it has been mine a number of times. BTW, this can be done even on third party boards, you just have to figure out the processor and the pin outs to get the right access.

bisrig has good suggestions and he is absolutely right you might be able to find a PCB shop that has the ability to pull the flash data off for you. There are even smaller shops you can find that might be able to do it at a reasonable cost. Just a thought too, you might look specifically for data recovery companies, many generally focus on Hard Drives, but my bet is some pull data off flash too (never know at least worth a phone call or two).

</comment><comment><USER4> A couple of general ideas to help you scope the solution space:

\- If you can do something with the part still in-circuit (i.e. the PCB assembly itself is still functioning), that's probably a preferable way to proceed. For instance, if the part is connected on the PCB to a processor, you may be able to connect to the processor via its JTAG or debug interface and dump the attached memory that way.

\- If you're going to try to go down the flash programmer route, note that this will require you to get the part off the board, which can be tricky if you don't have the right equipment (especially if it's a BGA).

\- One thought that comes to mind re: flash programmers is that some of the components distributors will do pre-programming as a service, which means they have equipment to program the loose parts (& may be able to use the same equipment to read the contents back out). If you or your company have a relationship with one of these sorts of companies, you might be able to lean on your sales rep to get a favor.

</comment><comment><USER5> If you are looking to just dump your Flash then you should look for tools such as [http://www.ezoflash.com/ezoflash.htm](http://www.ezoflash.com/ezoflash.htm). JTAG is good option but for that you need your controller to be able to exercise JTAG sequence (above responses have good suggestions). [Google Search Term: EN29LV640B Adaptor or Programmer].

However, fundamental question is, if your device is bricked, then why you are not asking how to un-brick it or recover it and why you want memory dump? I am asking this question because dumping the flash memory which is on PCB is daunting task for even seasoned hardware engineer. May be there is alternate way to fix your actual problem.

But again it all depends what you want to achieve.</comment>


Twitter's Life Cycle & What It Means To Marketers - <AUTHOR> http://www.techvibes.com/blog/twitters-life-cycle-what-it-means-to-marketers

<comment><USER2> Summary: Twitter is in maturity / value discovery phase. Show standard product life cycle graph. Then blatant plug for gist.com, which "Twitter needs in order to filter lots of content".</comment>


Describe what your code won't do - <AUTHOR> http://localhost:4000/2016/01/31/describe-what-your-code-wont-do <comment><USER2> In HN's case that's apparently checking whether the link points to localhost.

</comment><comment><USER3> Wrong URL. Try submitting again.</comment>


Ask HN: Getting started with GitHub - <AUTHOR>

As a soon graduating CS senior who feels a calling to the startup scene - I felt an appropriate learning opportunity would be try contributing to open-source projects on GitHub.
However, I am not sure how to start. I feel that my skills aren't yet up to the level that I could contribute solid code to any of the large projects.
I am web developer at heart, so I have a strong knowledge of the main technologies as well as some django, drupal and others. Are there any particular projects you can think of that I would be able to contribute to? Any other relevant tips or advice that you think that I need?
tldr; How should I get started on GitHub? <comment><USER2> I can see three or four possible approaches:

1\. Pick a project at (more or less) random; something that "scratches an itch" for you personally. It may or may not turn out to be maintained, the maintainer(s) may or may not be receptive to pull requests, etc., but nonetheless, you can grab it, fork it, and start hacking. If it's a project with a mailing list / forums, you might want to lurk a bit first, get a feel for the community, and maybe even post a message saying "Hey, I was thinking about adding Feature X, or fixing Bug Y, any interest in that?"

2\. Ask around for a project that's actively seeking more help; maybe even one that's being run by a fellow HN'er. Build a good relationship with said HN'er and maybe get them to act as a bit of a mentor and walk you through the early phases of your involvement.

3\. Check <http://www.reddit.com/r/FOSSHelpWanted/> and find something there.

4\. Start your own project from scratch and put it up on Github.

And for a slightly self-serving bit... if you know (or want to know) Groovy and are looking for a project like mentioned in [2] above - that could use some help - I might just know of one. Shoot me an email if you'd like to hear more. :-)

</comment><comment><USER3> Well, first you need to get started with Git, if you haven't already done that. Github itself provides links to Git tutorials.

Anyway, many projects on Github use Github's issue system for tracking bugs and feature requests. So if you find a project that you are interested it, see if it has any outstanding bugs in the Issues section that you think you could take on. Then fork the repo and try to fix the bug. Test your fix to make sure it works, then submit a pull request saying that your fork fixes the bug.

</comment><comment><USER4> I would take a deeper look at some of the modules/plugins for the frameworks you're interested in. If you don't care about any particular project, you could simply start your own. You're sure to come across a bug at some point or a feature you're missing from a library. Then, fix it yourself and submit a patch.

</comment><comment><USER5> TL;DR you should just start using git and begin the process of learning. Pushing code to a project isn't really how github works, so just find a project you think you can help and just fork, mod and push. Hence: the beauty of git: you own the repo!

</comment><comment><USER6> Usually a good introduction to a free software project is to provide some patches (via pull requests) to fix bugs, add features or improve something.</comment>


Design patterns for hacking together prototypes: object dictionaries - <AUTHOR> http://web.eecs.utk.edu/~azh/blog/objectdictionaries.html <comment><USER2> Hah, this reminds me a lot of ECS (Entity-Component-System) architectures [1]

The first time I read about ECS I thought it was a completely crazy idea, but after trying it I realized that I was able to have extreme low-coupling and complete separation of concerns. It was great for hacking things, but in the long term it was also great for maintenance and code reuse! I never felt this way about OOP, ever.

In this case however it seems that the "Entity Management" part is ad-hoc, with Editors themselves putting things on the dictionaries. Ooops :)

EDIT: I think one can get a lot of mileage out of something like this if the dictionary management code is properly encapsulated in an isolated module/class. Just an idea.

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

<comment><USER3> ECS is a hodge-podge of concepts, each implementation mixing in different proportions some or all of the following: relational data model, data-oriented architecture, flexible recombination at runtime, removing the fixed inheritance graph, cache-friendly flow.

What's in the article is really closer to "relational data model" than all of these above. All these dictionaries are essentially implementing SQL selects. The "relational data model" lens to viewing ECS is that it's essentially giving each component its own table, and doing plenty of joins.

I find this really interesting, and my current side project is a roguelike game that focuses _only_ on that part - relegating all game ECS into an in- memory SQLite database. I decided to go that way after trying to improve my last attempt at an ECS framework, only to realize I'm essentially hand-coding SQL indexes, and that's not something I want to do when I'm prototyping a game.

<comment><USER4> That's very cool. It reminds me of a game someone built with DataScript (an in-memory relational data store based on Datomic): [http://www.zetawar.com/blog/2016/05/17/technology- choices/](http://www.zetawar.com/blog/2016/05/17/technology-choices/)

</comment></comment></comment><comment><USER5> And then before you know it your prototype is in production, you've been promoted or left the company, and it is some poor bastard that you've never mets problem!

<comment><AUTHOR> I'm going to quote this in my lecture tomorrow to my undergraduate software engineering class :)

</comment></comment><comment><USER6> I understand this is for rapid prototyping and not for production use, as the author clearly stated. But it did remind me of an anti-pattern I see all the time at work that does make it's way into production, often for the same reason.

I work primarily in Python, and one thing I see all the time is using dictionaries instead of method arguments. The thought is that when the method evolves over time, you can just add a field to the dictionary. What ends up happening is this dictionary argument is passed up and down the call stack for every nested method call, and sometimes elements are added, edited, or deleted on the way.

Whenever I have to do a refactor of methods like this, it is awful trying to figure out the state of the dictionary, what was originally supposed to be in it, and if it's returned, which parts are actually relevant.

<comment><USER7> Wouldn't it be much more appropriate to use immutable dictionaries in this case (or just not mutate them by convention)? Clojure does this and it seems to work pretty well.

<comment><USER6> Yes but at that point, designing the structure of the dictionary and not allowing any down-stream method calls to alter it would require the same amount of work/forethought as actually redesigning the method to take X defined inputs and return Y values (and documenting it).

<comment><USER8> Initial effort when refactoring might be the same -- or even bigger -- but it will save you time afterwards. The added peace of mind is not to be underestimated either.

</comment></comment></comment></comment><comment><USER9> Did this in a Groovy project once. It indeed allowed me to move faster in the beginning but refactoring the project half a year later was the horror.

</comment><comment><USER10> This is my default python design pattern for quick projects. Just treat everything like a dictionary, EVERYTHING.

<comment><USER11> Well, to be fair that's almost just idiomatic python.

<comment><USER12> Yeah, in Python everything _is_ a dictionary: namespaces, classes, instances. ;-P

</comment></comment></comment><comment><USER13> Why not just _ln -s ..._ ? In the same spirit of thinking...

 _Those who don 't understand Unix are condemned to reinvent it, poorly._ \- Henry Spencer

... via [https://github.com/globalcitizen/taoup](https://github.com/globalcitizen/taoup)

<comment><USER14> Yeah. Like how systemd is inner-platform-ing [0] the hell out of Linux.

[0]

[https://en.wikipedia.org/wiki/Inner- platform_effect](https://en.wikipedia.org/wiki/Inner-platform_effect)

</comment></comment><comment><USER11> So...fields, then? Except with a leaky scope and no encapsulation?

This can be useful when you want to keep an association to an object but you want to ownership of that list of associations in a different object but I certainly would not make these global.

</comment><comment><USER15> As a backend guy, what I see is that I could assign an id to each editor and reference everything by the id. It's about the same thing internally, of course, but a bit more orthodox for those weirded out by objects as dictionary keys. Plus I'd probably have the file path and such on the editor object, then only labels and buttons outside the editor would be kept out of the editor objects. Voila, a pretty classical architecture.

</comment><comment><USER16> This seems like absolutely horrible advice. Building something quickly doesn't mean disregarding every development common sense since we invented these things to help us.

What's next? Forget numbers, just String everything because you'll save time serializing?

<comment><AUTHOR> Oh, it'll get worse! Just wait until pattern #3 that I post.

<comment><USER17> This is exactly why you work in academia.</comment></comment></comment>


Is this useful? Shuffle through top content from Hacker News - <AUTHOR> http://friendshuffle.com/browse/t/hntweets

<comment><AUTHOR> We just added support for shuffling between links shared by a specific user and links shared by users from a specific list.

Try out these as examples (or the link submitted).

<http://friendshuffle.com/browse/t/techcrunch>

AND

<http://friendshuffle.com/browse/t/techcrunch/team>

These links can be changed to work for any Twitter user (browse/t/twittername) and any Twitter list (browse/t/twittername/listname)

We would be really interested to know how the experience is when you shuffle through your own lists / users.</comment>


Nevada utility strikes cheapest electricity price in US with solar farm - <AUTHOR> http://www.pv-magazine.com/news/details/beitrag/buffett-strikes-cheapest-electricity-price-in-us-with-nevada-solar-farm_100020120/#axzz3fMNqBqSH

<comment><USER2> The numbers in this article make no sense:

"The PPA undercuts a previous price agreed with NV Energy last year - $0.46/kWh from SunEdison's 100 MW Boulder Solar Project – and could quite possibly be the cheapest electricity in the U.S."

$0.46/kWh is outrageously exensive. Anybody could undercut that.

"NV Energy, a Nevada-based utility owned by Buffett's Berkshire Hathaway, has agreed to pay just $0.3.87/kWh for solar electricity from the 100 MW Playa Solar 2 project being developed by U.S. thin film company First Solar."

What is "$0.3.87/kWh" supposed to even mean?

It may sound pedantic, and what they _might_ be saying is that the electricity is $0.0387/kWh versus $0.046/kWh" \- but the entire _point_ of the article is specificity around the prices, you would think they would nail that - particularly in something called "pv-magazine.com"

A much more substantive critique - how much of that low price is a result of government subsidies, and what is the "natural, unsubsidized price", and, also, how will that price change as subsidies for solar expire at the end of this year?

[Edit, a few minutes later - the style of numbering with the weird placement of the decimals is consistent throughout the article, and one I've never seen before in an english language article - is anyone else familiar with it? Makes reading the article extremely challenging.]

<comment><USER3> Try this version which is closer to the original press release and hasn't garbled the prices:

[http://www.bloomberg.com/news/articles/2015-07-07/buffett- sc...](http://www.bloomberg.com/news/articles/2015-07-07/buffett-scores- cheapest-electricity-rate-with-nevada-solar-farms)

"Berkshire Hathaway Inc.'s NV Energy agreed to pay 3.87 cents a kilowatt-hour ... Last year the utility was paying 13.77 cents a kilowatt-hour for renewable energy ... The utility also agreed to pay 4.6 cents a kilowatt-hour for power from SunPower Corp.'s 100-megawatt Boulder Solar project."</comment></comment>


Ask HN: Do you use N + Enter to access Hacker News? - <AUTHOR>

Do you find yourself (sometimes) mindlessly opening a new tab and pressing N + Enter just to see what's new? <comment><USER2> More like n + down arrow + enter, but yes.

I will also fully admit to having closed an HN tab and then immediately opening a new HN tab out of habit.

</comment><comment><USER3> Cmd-L + n + enter is the Chrome winning combo for me.

<comment><USER4> Or just Cmd-T + n + enter

<comment><USER5> Same here, and it is fun to see it not working after you have just reinstalled/started using a new computer, but after some days everything is the same and I'm in peace.. almost :)

</comment></comment></comment><comment><USER6> Yes; and it is unfortunately the entrance to the "dark playground" for me.

See [http://www.waitbutwhy.com/2013/10/why-procrastinators- procra...](http://www.waitbutwhy.com/2013/10/why-procrastinators- procrastinate.html) for the full expansion of the dark playground.

</comment><comment><USER7> Yes, but via hckrnews.com (so H for me). It's a good pointer that I really am procrastinating when I do it repeatedly in the space of a few minutes.

</comment><comment><USER8> Yes, sadly. On my machine it is win+w - n + enter (new browser + hn ). If you don't want to waste your whole day on HN try the procrast settings in your profile. What works for me is every 70 minutes I get 10 minutes HN.

I started developing a site which domain starts with "news". Sometimes in some mysterious way that is the first. :)

</comment><comment><USER9> I was used to <Ctrl> \+ T -> "new" -> Enter Never realized just the "n" would be sufficient. From now on, definitely 'am gonna use N + Enter

</comment><comment><USER10> H enter for [https://news.ycombinator.com](https://news.ycombinator.com) Safari is smart enough to check the title tag

</comment><comment><USER11> No because I disabled the awful auto-complete in Firefox. This place is the first drop-down entry for "n" though.

<comment><USER12> True. It used to be the best auto-complete out there, and for some reason it has become just as bad as Chrome's.

</comment></comment><comment><USER13> I just brain-deadedly tried that to see what it does and... yes, apparently. (plus the down arrow)

</comment><comment><USER14> I use the letter 'Y' for y-combinator

<comment><USER15> Y, for me, is for YouTube.

</comment></comment><comment><USER16> No, I think I type news + Return (Firefox).

</comment><comment><USER17> netvibes.com open in an tab aggregating the web and letting me know when more to read.

</comment><comment><USER18> yes, on my laptop. On my iPad I start with 'h' to get hn.premii.com.

</comment><comment><USER19> middle click the bookmark bar icon.

</comment><comment><USER20> Yup.

</comment><comment><USER21> Yes</comment>


CSS Killswitch - <AUTHOR> http://csskillswitch.com/

<comment><USER2> It's a great idea to leave a backdoor on all of your clients' sites controlled by a random dude.

<comment><USER3> I've found using private key login with ssh is the best way to leave backdoors. Very few inexperienced administrators will look for the keys. Some even leave your user account on the server after you are gone.

I was able to get into some sites I formerly had access to because my private key was never revoked. It was a bit of irony to use that same "unauthorized" access to remove my own key from the authorized_keys file.

<comment><USER4> Put it in the root account and name it something like "automatic FTP backup, don't remove!".

Oh, and by the way, don't do that. It's liability-hell, and probably illegal in most places, too.

</comment></comment></comment><comment><USER5> Am I the only person that realised this is a joke?

After you've signed up:

"Here's a handy little text file with your login credentials. Might be smart to save it somewhere..."

<http://csskillswitch.com/csskillswitch_pistoriusp.txt>

Yeah, I got text Rick Rolled.

<comment><USER6> Probably because you are the only one silly enough to sign up? :)

</comment></comment><comment><USER7> this will work great as long as your customer doesn't know how to delete a line of css.

<comment><USER8> Should be pretty safe, then.

</comment></comment><comment><USER9> So, you just create a "body {display: none !important}" stylesheet externally, and @import it in your client's CSS? Set to a blank file normally, and the above when you "kill" it? And the site just offers hosting and the ability to throw the switch? (I could be missing something, as I haven't signed up for it, so this is just from reading their site & site's code)

An interesting idea, and could _definitely_ work with some clients. If nothing else, it could temporarily damage them, which if they haven't paid up, they deserve. It _does_ seem like something they could pay a web guy a few bucks to diagnose and fix, though.

<comment><USER10> >It does seem like something they could pay a web guy a few bucks to diagnose and fix, though.

If they _knew_ it would only be a few bucks from "a web guy" they would likely be able to fix it themselves.

I think it's seldom (never?) I'd actually want to go this route [partial payments along a project helps reduce how much I have at risk], but if I were considering such... rather than a blank page, perhaps a display that said something like "A database error occurred. Please contact developer of this site." That might help the site owner read the subtext ("Payment is way past due.") and not make visitors wonder, "Why isn't my Google working on your site today?"

</comment></comment><comment><USER11> Interesting idea, but is it worth making a whole service out of? It's something that, if I wanted to do, I would be happy to do (and have less concern with doing) myself.

</comment><comment><USER12> Or you could just not upload to the client's server until you cash the check. Demo with watermarked images and/or screen capture video.

</comment><comment><USER13> The user interface of this page is remarkable. Sign up without choosing a username or password generates the missing part. Downloading the randomly generated username/pass in a file (broken or intentional rickroll right now).

There are a lot of very small and nice elements in this page worth stealing in a future project- kudos.</comment>


Discord Is Having an Outage - <AUTHOR> https://status.discordapp.com/ <comment><USER2> Pet peeve of mine: as I understand it Discord labels each of its communities as "servers". That's why you've probably encountered youngins calling subreddits or group chats "servers" lately. That's obviously a misnomer since it's not like they're technically independent servers (as showcased by this crash).

It's just vocabulary but for somebody like me who still hangs onto IRC even though it's been almost entirely displaced by proprietary and centralized solutions like Discord it really feels like they're rubbing it in. Just co- opting decentralized lingo with none of the actual features.

<comment><USER3> Wait until you see what Discord calls servers internally :) [0]

Jokes aside, I don't think there's anything about the term "server" that implies independence. I can think of many centralized access points that are called "servers" but aren't independent. Hell, even racks aren't necessarily independent.

I get what you're saying, but the term "server" can be pretty vaguely applied.

0: [https://discordapp.com/developers/docs/resources/guild](https://discordapp.com/developers/docs/resources/guild)

<comment><USER4> > * I don't think there's anything about the term "server" that implies > independence.*

Communication is perception.

Simian above, and myself grew up in an era where a server did indeed imply independence. Counterstrike servers, IRC servers, FTP servers, all independent things in these contexts.

For others the perception may be different as I assume it is with anyone young who primarily encounters the word server in their Discord use.

<comment><USER3> But that's kinda my point: CS servers weren't really independent. If Valve/Steam/VAC/etc. stopped working, CS servers were all down effectively.

<comment><USER5> And yet I'm convinced Discord chose this naming _because_ it implies independence. It sounds a lot cooler to say "We got our own server" than "We started our own guild".

<comment><USER6> Discord replaced ventrillo and teamspeak for gaming communities. For those you actually ran a "server". Whether or not the company started out calling these accounts "servers" initially, that customer base sure did. It was the terminology customers were used to. They neither knew nor cared what the technical aspects were of having a separate server; it just what you called that thing that the team used to communicate.

<comment><USER5> > For those you actually ran a "server".

Exactly - something difficult to do that not everyone could just do (or rent from a service, or have permanently running). Which is cool.

I'm saying this is an important element to Discord's early success precisely because it understood the gamer audience it was engaging, how it communicated and thought and the tools they were using. Discord allowed people who previously couldn't to "have a server". Which lead to a period of everyone "making" one, and then better ones survived. Not the only factor, but it contributed. I clearly remember how proud people were of their "servers".

I'm sure they knowingly made use of this fact and picked a term that implied more than it does in technical reality because it had social currency. If you play to an audience, understanding what it values and what generates status within it helps a lot.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> Is anyone else pretty bothered that popular services like Discord can and do read all of your 'private' messages in plaintext, and when/if they are bought out, all of your chat and usage history will be sold to an unknown third party along with the company?

I wish at some point we'd see _mainstream_ messengers that put actual effort into respecting the user, along with their autonomy and privacy. It'd be amazing if we could actually _directly_ (from a technical perspective) message other people, without needing central servers between us.

<comment><USER8> WhatsApp? Name one messenger that is not closed source and the masses use.

<comment><USER9> Email

<comment><USER8> I agree that the masses use this, but I'm not sure that you can compare email to WhatsApp, maybe a fair comparison would be _instant_ messengers.

Also open source?, I doubt it.

<comment><USER10> The protocol is open, even if the most commonly used implementations may not be.

As for _secure_ , well that's a whole other matter.

</comment></comment></comment></comment></comment><comment><USER11> microsoft teams failed too today so I reverted back to email. slack had downtime aswell.

None of these were prepared for the massive surge of users working from home.

<comment><USER12> If only we had a decentralized networking protocol.

<comment><USER13> What's a popular decentralized networking protocol that is easily used for chat? XMPP?

<comment><USER14> Depending on how you define popular, Matrix [1] fits here. Mozilla has switched from IRC to Matrix recently, and there are likely others I've forgotten or missed.

[1] [https://matrix.org/](https://matrix.org/)

</comment></comment></comment></comment><comment><USER15> My work set up Discord for voice chat during WFH despite mine and my colleague's efforts to promote setting up a Matrix server with federation disabled.

We self-host just about everything else ourselves, but for some reason everyone flocked to Discord.

<comment> t-writescode They just want some random company focused on non-corporate secrets to read all of your channel messages and private messages. It's fine :)

In seriousness, I suspect if your company wasn't already using a chat solution then perhaps they weren't interested in that.

</comment></comment><comment><USER16> It is this related to the increasing number of colleges in France using discord to give lessons to the students?

<comment><USER17> Doubt it.

The most of USA is going in to two week lock down if you look at schools, restaurants, a lot of white collar jobs, etc.

What do you think everyone is going to do all day? Every kid in the country is about to use the internet at the same time.

I think we're going to see a lot of outages over the next two weeks.

</comment></comment><comment><USER18> Can anyone help me explain the mad rush to make discord servers for everything? Is it gamified somehow?

<comment><USER19> What mad rush are you talking about?

<comment><USER18> In many Reddit communities you'll see "hey community x, here is my new discord server 'x'"

An extremely niche and obscure (single player) game I follow for example has four discord servers-about one for every three active posters in the community!)

</comment></comment></comment><comment><USER20> I also got problems with Safari Books Online around lunch time.

But our Microsoft Teams meeting in the morning worked pretty well. Even that everyone was calling from home. (That is 10 connections while usually is just one meeting room and a couple of people from home or another location).

Google Photos search was also stuck for several seconds before getting results.

In general the web felt slow most of the day. I am not surprised that Discord service is suffering.

</comment><comment><USER21> Unfortunately it will come back, as all bad things do.

</comment><comment><USER22> soon we'll have to quarantine TCP to avoid congestion

</comment><comment><USER23> This is what centralized infrastructure does. No surprises there.

In the mean time, my IRC-servers had 100% uptime. Just saying'.

<comment><USER24> Compared to Discord, how many users does your IRC servers have?

<comment><USER25> I think that's their point. It isn't a centralized service comparable to Discord that will be overwhelmed by the entire quarantined world bearing down on it at once.

</comment></comment></comment><comment> CORBLIMEY-19

      A series of fatal errors caused the majority of servers to become unavailable. We are working to revive all of these resources. Most users will be unable to connect while this work is ongoing.

That's microservices for you. Instead of one fatal error you have to fix there's multiple in different codebases at the same time

<comment><USER26> Can you remove the code formatting on that and just use quotations? Very difficult to read on mobile

<comment> caleb-allen Here is what it says:

"A series of fatal errors caused the majority of servers to become unavailable. We are working to revive all of these resources. Most users will be unable to connect while this work is ongoing."</comment></comment></comment>


SSL Security Issues and Vulnerabilities - <AUTHOR> http://gotowebsecurity.com/ssl-security-issues/ <comment><USER2> A post on "SSL Security Issues and Vulnerabilities" on a blog without HTTPS, from "gotowebsecurity"...

<comment><USER3> Valid point.</comment></comment>


Inductive Logic Programming: Techniques and Applications (1994) [pdf] - <AUTHOR> http://www-ai.ijs.si/SasoDzeroski/ILPBook/ILPbook.pdf

<comment><USER2> About Prolog and Expert Systems, I recently discovered rule-based programming.

It is used in text mode games ([http://eblong.com/zarf/essays/rule-based- if/index.html](http://eblong.com/zarf/essays/rule-based-if/index.html)).

<comment><AUTHOR> Haven't heard of Inform 7 before! Looks pretty interesting! Thank you for sharing.

<comment><USER2> You're welcome.

I like the properties of "flat structures" (like in state machines, pipes or even IFTTT). They can be journalized, visualized as matrices or optimized easily.

</comment></comment></comment><comment><USER3> I'm sure it's an interesting book. My experience with logic programming, though, is that functional or high-level imperative programming are just easier to do real-world apps with. Anyone wanting to take a stab at logic programming might want to try Mercury [1], the most practical one. A common approach from AI days was implementing Prolog in a more complete language where you could use either depending on benefits. Allegro CL does this [2].

[1] [https://en.wikipedia.org/wiki/Mercury_%28programming_languag...](https://en.wikipedia.org/wiki/Mercury_%28programming_language%29)

[2] [http://franz.com/products/allegro-common- lisp/acl_prolog.lht...](http://franz.com/products/allegro-common- lisp/acl_prolog.lhtml)

<comment><USER4> This is about machine learning, only instead of inducing things like neural network weights, it's inducing a logic program. I get the impression most of the work in this field gets called 'program synthesis' these days, though I haven't kept up.

<comment><USER3> Ahh, the parts I read make more sense now that you told me the goal. I did do work in program synthesis, although we called it "automatic programming." Best of it is in ASIC development right now. I'm keeping this just because you said that. Might help someone working in the field who asks what resources I have on that topic.

<comment><USER2> There is "sketching". The idea is to write a partial program and use wildcards for the parts you are not sure of. For example, you can replace values on loops by a "%". The tool try to find the best program for a given input.

[https://bitbucket.org/gatoatigrado/sketch- frontend/wiki/Tuto...](https://bitbucket.org/gatoatigrado/sketch- frontend/wiki/Tutorial)

Superoptimisation is also related to program synthesis. It's a fascinating subject.

Peter Norvig did a talk about what we can expect with that.

<comment><USER3> That's awesome stuff! Thanks for the link. I'll have to do some more research on this stuff.

<comment><USER2> I like that too :-)

About superotimisation, the most visible person is John Regehr. He works with LLVM with his students.

[http://blog.regehr.org/archives/1246](http://blog.regehr.org/archives/1246)

<comment><USER3> I'll keep an archive of that just in case. The approach described doesn't seem right, though. My old AI work suggested the best approach to this problem _may be_ combination of these: patterns for common design specs and their implementations; constraints and constraint solving techniques for narrowing things down; heuristics for optimizations and unusual implementation situations. You give bare-bones of the design with some declarations about calling-convention, safety, ranges, data structures, and so on. The software fills in the blanks.

Easier to describe than to do. Yet, there are already tool-sets that auto- generate a lot of code and you could say functional language compilers do that to a large degree. Could start with them and just add smarts/constraints. I'm sure there's people doing that right now somewhere.</comment></comment></comment></comment></comment></comment></comment>


Bitcoin days destroyed - explained - <AUTHOR> http://bitcoin.stackexchange.com/questions/845/what-are-bitcoin-days-destroyed

<comment><USER2> Absolute rubbish metric, if anything it measures the absolute opposite of monetary velocity. The value is basically guaranteed to grow and grow even in the face of flat or declining economic activity

Monetary velocity is the sum of all transactions in a period divided by money supply Vt = nT / M

Imagine a model where the number of bitcoins is increased by one each period, and one random bitcoin is transfered to another party as economic activity

                             day 1 day2                                   day 10
      Total Money Supply:      1.00 2.00 3.00 4.00 5.00 6.00 7.00 8.00 9.00 10.0
      Actual Transactions:     1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00
      Mean BTC days destroyed: 0.00 1.00 1.33 1.66 2.00 2.33 2.66 3.00 3.33 3.67
      Monetary Velocity:       1.00 0.50 0.33 0.25 0.20 0.17 0.14 0.13 0.11 0.10

As you can see monetary velocity goes in the exact opposite direction of bitcoin days destroyed and doesn't follow any similar curve.

Whats worse is it doesn't have a consistent relationship with any of the real measures as you change your assumptions. Imagine instead you model a situation where every coin turns over every period. In this case Total money supply, actual transactions and BTC days destroyed will all be the exact same thing, instead of the earlier wide divergence. Monetary velocity will be exactly 1 each time because total transactions will equal total money supply.

BTC days destroyed also has a hard upper limit at total days created which means it can't measure very quick activity accurately (all money turning over once a day will be identical to it turning over 10x a day) and will over weight economic growth after a period of low activity.

<comment><USER3> If you look at the graph pictured on the post, copied from the bitcoin wiki, it does not always "grow and grow", because it is in fact graphing the percentage of the total bitcoin days, not the absolute number. This is further described on the stackexchange post, and you'll note that my answer there explains that it has been flat over the last 3 months.

I agree that it is quite different from a velocity measure, simply because it was not intended to be a raw velocity measure. Bitcoin has some unusual features which require unusual metrics. This is just one that is being explored, as an alternative to raw transaction volume, as the posts explain.

<comment><USER2> here is the graph that I saw linked, that I used: <http://banana.mine.nu/daysdest.html>

the scale appears to exceed 110,000,000 - I don't believe that it is a percentage.

I understand the desire to remove the noise of transfers that are not actual economic activity, but I think this is a poor way to go about it. With bitcoin it is almost as if you had the ability to record every time a dollar bill went into a pocket. Sure, some of that is economic activity but it can also just be someone changing their pants. Even if economists had that data available they'd likely still rely on the business and financial institution reports to gauge economic activity. In this way raw BTC volume is a bit of a red herring, at least until you can produce a good view of economic activity and see how it relates to BTC volume or BTCdd.

As BTC continues to have an unstable price, a large percentage of the real economic activity will include exchanges for other currencies or value stores. Since exchange volume is quite centralized, you'd only need to have the cooperation of a few exchanges (you'd want to filter out traders) to gain what would probably be a rather accurate picture of real economic activity in bitcoins.

</comment></comment></comment><comment><USER4> This metric seems to be just as flawed as total bitcoins transferred. Why should a bitcoin that hasn't been spend in a while be worth more than one that was spent yesterday? If someone sells something for bitcoins and then buys something else the same day, that seems like a great indicator of bitcoin activity but the second transaction is completely ignored by this metric.

<comment><USER5> If you were to monitor velocity of money <http://en.wikipedia.org/wiki/Velocity_of_money> naively, by calculating total bitcoins transferred, then it would be trivial for any party to increase the velocity arbitrarily high, by just sending their 10 bitcoins through a very long cycle of addresses. And there have been examples in the block chain, where parties unknown have moved large amounts of bitcoin through many accounts, for no obvious reason. Bitcoin-days-destroyed at least seems to avoid that problem.

I agree its still a flawed metric. Your example of the same bitcoins being used in multiple transfers, in the one day, seems completely valid to me.

But I don't think there's a perfect way of measuring the velocity, unless you've a _complete_ map of addresses-to-identities, which isn't available (and even that is neglecting transactions done within exchanges, that aren't backended onto the bitcoin system - which is probably a fair enough limitation.)

The same is true, if you are trying to calcuate velocity of money in any traditional economy, where cash transactions are permitted. The cash could be used in several transactions between observations - theres no way of telling - and theres nothing that can be done to solve that. So, such measures are always going to be approximate.

On this topic, something that surprised me recently, was the assertion in Paul Krugmans blog [http://krugman.blogs.nytimes.com/2011/09/07/golden- cyberfett...](http://krugman.blogs.nytimes.com/2011/09/07/golden- cyberfetters/) "The actual value of transactions in Bitcoins has fallen rather than rising. In effect, real gross Bitcoin product has fallen sharply. "

I'd love to know how he came to that conclusion, or what sort of data he used, and whether its accurate.

<comment><USER6> The data isn't from Krugman but was in the article he linked to.

<comment><USER5> Ok - it looks like they reached that conclusion by multiplying the number of Bitcoins transacted, by the dollar value of a Bitcoin.

Fair enough, but its a measure vulnerable to the problem that days-destroyed is trying to solve - it'd be easy for people currently sitting on large volumes of Bitcoin to 'solve the problem' that is highlighted by Krugman, by just shuffling their coins around.

</comment></comment></comment></comment><comment><USER7> As a very early adopter (probably in the first 100) and author of DiabloMiner, and forum admin... I have exactly no idea what this is supposed to prove.

The only metric that seems to be valid is "are new people using Bitcion?" The answer is yes, thus Bitcoin is still here.

</comment><comment><USER8> Can someone explain to me the Y-Axis here? I don't can't figure out the denominator of that percentage. I assume the numerator is "days destroyed". Is the denominator the total number coin "age days" at the start of a given day?

<comment><USER9> The graph is from this wiki page, which explains the axes slightly better: [https://en.bitcoin.it/wiki/Bitcoin_Days_Destroyed#Graph_of_P...](https://en.bitcoin.it/wiki/Bitcoin_Days_Destroyed#Graph_of_Percentage_of_Bitcoin_Days_Destroyed) : the x-axis is time measured in blocks (created on average once every 10 minutes).

The percentage is (bitcoin_days_ever_destroyed / bitcoin_days_ever_created). Today there will be ~7.2 million bitcoin days created, because that is how many BTC are in circulation.

</comment></comment><comment><USER10> I am reminded of the weird financial metric that Groupon invented...</comment>