"Ruby Best Practices" Collaborative Blog - <AUTHOR> http://blog.rubybestpractices.com/

<comment><USER2> Maybe we should wait until they have something genuinely interesting to write about, and _then_ link to it.

<comment><AUTHOR> Fair enough. Though I have already benefited tremendously from new reader feedback, everything from fixing RSS feed validation to proofreading.

I think two articles up so far are genuinely interesting though, FWIW.

<comment><USER2> Then link to them. It's Hacker News, not Hacker Blog Promotion.

<comment><AUTHOR> I thought announcements might be news-worthy, especially when the tech under the hood is all hackable. I actually did check the guidelines before posting, but I should lurk moar, perhaps.

<comment><USER2> Maybe what you want to do is write a blog post introducing the blog, providing context as to why the blog authors are notable and what some upcoming stories are, and then link to that, instead of just the blog front page.

<comment><AUTHOR> That already exists, and maybe I should have linked it instead, you're right. But I imagine one post is enough for today :)

Here it is for those interested, though: <http://blog.rubybestpractices.com/posts/gregory/welcome.html>

</comment></comment></comment></comment></comment></comment><comment><AUTHOR> Just announced today. Will feature posts from James Britt, Gregory Brown, Kirk Haines, Robert Klemme, Jeremy McAnally, Sean O'Halpin, Magnus Holm and Lakshan Perera. Focus is on showing how to write better Ruby code through practical examples.

</comment><comment><USER3> Still a good link to put in my delicious. Next time I find it they'll (hopefully) have lots of great content.</comment>


X-Rays of Toys - <AUTHOR> http://www.brendanfitzpatrick.com/41864/3810418/gallery/x-rays-of-toys-01

<comment><USER2> If you like this, you should check out this Flickr account with x-rays of videogame consoles and controllers: [https://secure.flickr.com/photos/ravanderende/sets/721575943...](https://secure.flickr.com/photos/ravanderende/sets/72157594368940565/).

</comment><comment><USER3> The batteries in this image appear as if they have been "drained" a bit:

[https://m1.behance.net/rendition/modules/124270165/hd/b17c3e...](https://m1.behance.net/rendition/modules/124270165/hd/b17c3ecfea520d1b7b0c2798a3a26432.jpg)

In all of the other pictures the batteries are completely opaque. Is this actually indicative of how much charge is left? And is this also how those Duracell pinch indicators work?

<comment><USER4> The pinch indicators are just Liquid crystal thermometers and a heating element.

</comment></comment><comment><USER5> These would make amazing wall art, sign me up.

<comment><USER6> There is actually a buy this button below each picture, which allows you to order prints of various sizes.

<comment><USER7> Yeah those buttons need to be a lot bigger. I also hadn't noticed until you pointed it out, other poster wrote "these _would make_ amazing wall art"

<comment><USER8> I saw the buy now button but thought it was to buy the toy :s

</comment></comment></comment></comment><comment><USER9> The screws make it easy to see where pieces join together, along parting lines or edges.

I'd love to see shots like this on my site: [https://www.takeitapart.com](https://www.takeitapart.com)

</comment><comment><USER10> He should provide links to purchase each print with its corresponding toy. The print would be a cool thing to hang in a kid's room (or even a big kid), but it would be way cooler if the kid also had the corresponding toy.

</comment><comment><USER11> Why are they colored? Genuinely interested - not an x-ray expert by any means.

<comment><USER12> "Brendan Fitzpatrick is a photographer for over twenty years and for the past seven years he has been living and working in Singapore. He uses x-ray machines at a local radiology lab followed by a few rounds of image editing and color correction in Photoshop to create unique skeletal images of flowers."

</comment></comment><comment><USER13> How does he do it? (How does one get access to an X-Ray machine?)

</comment><comment><USER14> What's that, a gun with a helicopter on top?

<comment><USER15> I've seen something like this in toy stores - that's more or less what it is, but instead of firing some kind of toy bullet, the trigger actually spins up the helicopter propeller via the motor just underneath it. I then assume the helicopter detaches and flies off once the prop reaches a high enough RPM to do so.

<comment><USER16> The helicopter is cast into the body of the gun and has wires running into it. Looking at the wiring, there should be lights in the propeller but they're not being shown. So the propeller most likely just spins and makes trippy light patterns.

It looks like there were some liberties taken with the editing to clean up the picture. There's a spring for the trigger return, which appears to double as a switch, but the trigger itself is missing. It looks like there should be a rotating cylinder on the barrel, as well.

</comment></comment></comment><comment><USER17> Interesting [http://www.invisiblelight.com.au/](http://www.invisiblelight.com.au/)

</comment><comment><USER18> I'm surprised they still use glass incandescent bulbs instead of LEDs. Perhaps it's cheaper?</comment>


DSLs and metaprogramming - <AUTHOR> http://hackerengineer.net/articles/23/dsls-and-metaprogramming

<comment><USER2> No, no, no! NO!

Ruby meta-programming uses runtime flexibility to do cool things, but has_many is just a method, like any other method, which is passed arguments (at runtime), and can do super-cool things with them because of the late-binding architecture of Ruby. This a concept originated from Smalltalk. It's super cool.

Lisp macros do something completely different: they let you extend the parser of the language. They _literally_ let you write code that edits your code, at compile time, before anything is run. It's super cool, too, but in a very different way.

Here's a hig-level view:

1) You write code.

2) That code is _translated_ to a data structure which is _interpreted_ by a computer.

Lisp macros are ways of extending what the _translation_ rules are. Ruby, on the other hand, has lots of neat design decisions which let you write code that _interprets_ instructions at runtime in interesting ways. Very different.

<comment><USER3> Sure, the inner workings of the system is as you describe, but the approach this article takes does make sense out of a developer standpoint, no? Sure "has_many" is just a method that the late-binding architecture of Ruby allows us to write, but this means that we can dream up our own DSLs and implement our DSL by doing what we do best - write methods ;) Which is a less general approach than the full-blown Lisp macros guns.

Is that right for me as a developer?

<comment><USER2> Spot on - they can certainly be used for similar goals (building powerful abstractions). But just as a horse and a bicycle can both be used to get places, but still be different, Ruby meta-programming and Lisp-style macros are very different, even if they are sometimes used to accomplish similar goals.

When you do meta-programming using Ruby, you're writing code that is executed at run-time (and can use runtime data). When you're writing Lisp macros, you're _literally_ writing a code pre-processor: a bunch of little programs that walk over your code and expand it to other code _before_ execution begins.

A _great_ question is what the relative limitations are of both. I don't have a definitive answer, but I think this is one of the fundamental questions software engineering should attempt to answer - what abstractions can we build at compile-time, and what abstractions must be left for run-time?

</comment></comment></comment><comment><USER4> Decent article...but bad title. Should've been something like "DSLs in Ruby and Lisp...why Macros matter". Regardless, I'd like to see this thread continued.

<comment><AUTHOR> Thanks for the feedback! I'm still getting the hang of technical blogging.

</comment></comment><comment><USER5> So I asked this on your blog but comments are moderated, so thought I'd repeat here. I like the article, but would really appreciate some specific examples on how Ruby metaprogramming gets hairy compared to Lisp. I'm a ruby guy of about 2 years, but have only flirted with Lisp through a few small tutorials.

So when do you run into problems with Ruby? Can you give some samples of code that demonstrate the problem, and how lisp's macros avoid it? And, does something like this (<http://news.ycombinator.com/item?id=948454>) fix the issue on the ruby side?

Thanks!

<comment><AUTHOR> I haven't gotten far enough to demonstrate the icky part, but I should get there within a few months. I definitely plan on going further with both Ruby and Clojure to see how they compare in the end. I knew this whole "Lisp revelation" thing would hit me at some point, but I doubt I'm going to switch completely. I'd love to post again with both side by side to compare and contrast.</comment></comment>


Southwest Airlines is having major software issues - <AUTHOR> http://www.azcentral.com/story/travel/airlines/2016/07/20/southwest-airlines-computer-woes-delaying-flights/87354164/ <comment><AUTHOR> Not only was their website down their reservations system was too. Interestingly, their mobile app remained up... so it sounds like some kind of an API access issue for their internal systems (web & reservations). I don't envy the people cleaning it up today!</comment>


The Idea about Ideas (2005) - <AUTHOR> http://paultyma.blogspot.com/2005/12/idea-about-ideas.html

<comment><USER2> This is Paul.

Sorry, I don't blog much anymore.

And no, Dodgeit was not first. Roger and I emailed many many times, but he'll happily admit Mailinator preceded Dodgeit by about 6 months (even heard him say it on a podcast once). Not that it matters much.

</comment><comment><USER3> If you define "luminary" ideas as those that aren't based on any previous ideas, then it's almost a given that none exist. Even when an idea is the logical next step, it can still be game-changing for those clever or lucky enough to realize it.

</comment><comment><USER4> The conversation in the middle of the post doesn't sound too different from conversations I've had with friends. I hope I didn't miss out on a big opportunity...

</comment><comment><USER5> Www.dodgeit.com was doing this long before mailinator. They eventually shut down for some reason, but still, mailinator wasn't original. Just well timed.

</comment><comment><USER6> Does Paul Tyma maintain any blog(s) now? I just spent the last two hours reading his personal and mailinator blogs..</comment>


Fireflies facing extinction due to habitat loss, pesticides and artificial light - <AUTHOR> https://www.cnn.com/2020/02/03/world/fireflies-extinction-risk-scn/index.html <comment><USER2> I haven't explored my feelings on it but this lines up with my limited observations and makes me incredibly sad.

I keep hoping they are just in a cycle that lasts a few years and I'll see them pop up again soon.

<comment><USER3> Most likely not, we're in the midst of one of the vast insect extinction events in man's history sadly.

</comment></comment><comment><USER4> I've been watching fireflies on my street for decades, and I have seen no decline - they show up at the same time of year, in the same numbers.

I was worried about what street lighting was doing to them (since I mainly saw them on the street), until one day I happened to be walking in a backyard with some huge trees, and saw more fireflies in those trees than I've ever seen before.

The trees were in a dark backyard and the fireflies seemed to be doing extremely well - the trees were just full of them.

And since fireflies eat sap from tree roots, I think human lighting activities don't really harm them too much.

My takeway: If you want to see how fireflies are doing, don't just walk down the street and look, make a point of looking in backyards, and unbuilt areas.

Suburbs and rural areas probably host large numbers of them. (But urban areas probably have few if any.)

</comment><comment><USER5> And this is another reason why we need half (and possibly less than half) the number of humans we have on earth.

Yes, we can carry more humans, but the cost is way too high.

<comment><USER6> It's a little late for that.</comment></comment>


How to automate Gulp tasks and generate webfont from SVG files - <AUTHOR> https://medium.com/@BuddyWorks/how-to-automate-gulp-tasks-and-generate-webfont-from-svg-files-43ad6fc70f96 <comment><USER2> do I need the Buddy to compile it?

<comment><AUTHOR> nope, this is only gulp task. You can run it locally or on server via node. But with Buddy it will be easily ;)</comment></comment>


Fourier Optics - <AUTHOR> https://en.wikipedia.org/wiki/Fourier_optics <comment><AUTHOR> >"Fourier optics is the study of classical optics using Fourier transforms (FTs), in which the waveform being considered is regarded as made up of a combination, or superposition, of plane waves. It has some parallels to the Huygens–Fresnel principle, in which the wavefront is regarded as being made up of a combination of spherical wavefronts whose sum is the wavefront being studied. A key difference is that Fourier optics considers the plane waves to be natural modes of the propagation medium, as opposed to Huygens–Fresnel, where the spherical waves originate in the physical medium."

</comment><comment><USER2> Physics folks were using Fourier optics to implement convolutions before they were computationally accessible.</comment>


Front-end Developer Handbook - <AUTHOR> https://frontendmasters.gitbooks.io/front-end-handbook/content/index.html <comment><USER3> I was reading HN on my phone, and this looked interesting, so I tapped the link. It took me to a brief page describing the three parts of the book, with a headline and one sentence about each part. At the bottom it said:

read online at:

• [http://www.frontendhandbook.com](http://www.frontendhandbook.com)

So I tapped the link. It opened a new tab with a brief page describing the three parts of the book, a headline and one sentence about each part. At the bottom it said:

read online at:

• [http://www.frontendhandbook.com](http://www.frontendhandbook.com)

So I tapped the link. It opened a new tab with a brief page describing the three parts of the book, a headline and one sentence about each part. At the bottom it said:

read online at:

• [http://www.frontendhandbook.com](http://www.frontendhandbook.com)

So I tapped the link.

Wait! Haven't I been here before?

There must be some other way to read the book.

Hmm... Some faint little gray icons at the top. Nothing there jumps out at me as a way to read the book. I keep wanting to go back to that compelling "read online at:" link.

But this time I skip past it. I go all the way to the bottom of the page where there is a faint gray angle bracket. What does it do?

I did it! I made it to the first chapter! Now I can read the Front-end Developer Handbook.

This is a true story. I really did tap the link that many times. I am not making any of this up.

<comment><USER4> 100% agreed. It's not well-designed on the front-end for mobile. That would make me skeptical about the book itself since it's supposed to be about...front-end design.

But I think one should be careful about the distinction between front-end design and development. This book seems to focus on development, and as someone who's taken a couple of courses from Frontend Masters, I trust it to be solid.

<comment><USER3> Indeed. And I'm sure Cody will see that this is fixed.

I had a chance to work with Cody on the jQuery Cookbook, and he's a smart guy. So Cody, if you see this, my apologies for poking fun at your new book's mobile experience!

My chapter of the jQuery Cookbook had a much bigger blunder. In a "recipe" called Coding Bare-Metal Loops, I recommended a particular loop style as the ultimate in speed...

> Use a for loop instead of .each(). To iterate over an array, it's hard to > beat this loop:

      for( var item, i = −1; item = array[++i] ) {
          // do stuff with item
      }

> But there is a catch: this loop works only if your array has no "false" > elements, that is, elements whose value is undefined, null, false, 0, or "". > Even with that restriction, this loop is useful in many common cases, such > as iterating over a jQuery object.

Well... It didn't quite turn out that way. This loop style can kick you out of the optimizer because it tries to access the nonexistent element after the end of the array. That's perfectly legal in JavaScript, of course - <USER2> nonexistent element evaluates as undefined - but code optimizers do not like it when you do that.

So a conventional loop turned out to be _much_ faster:

[http://jsperf.com/mikes-loops/2](http://jsperf.com/mikes-loops/2)

<comment><USER5> I hate it when people call these dumb loose pages a book.

Just like cotton in a bag isn't a comforter, a website with itsy-bitsy manuscript is not a fucking book.

So ...

> Poking fun?

Not at all.

<comment><USER6> What's your point?

</comment></comment></comment></comment></comment><comment><USER7> I'm going to say something good about this handbook for a change of tone.

Imagine an area of work that you have no idea about. Let's say Aerospace. If someone put together a set of links and categorized the stuff you need to learn to be able to work in the field, it is immensely useful since the simple listing of the things you need to learn about itself is a learning. A 0 to 1 bit flip. Though this post is not a highly curated handbook, it educates you on what you should Google about. That is a huge win by itself.

<comment><USER8> Agreed, I currently do a mix of front and backend development but there is a tonne of stuff in here I didn't know about comes back to "known unknowns and unknown unknowns".

This is one hell of a resource.

</comment></comment><comment><USER9> I take issue with the case against generalist or 'Full-stack' engineers. Of course you'll find people better at things if they specialize. But learning core javascript very well along with things like HTTP, databases, css, html etc. I'd say you're a pretty solid engineer that can build full products.

Not a designer, you can work with a designer.

<comment><USER10> I agree with this. I also know plenty of full stack engineers who are superior in both domains to the so-called specialists.

<comment><USER11> Yeah it confuses me when I meet backend developers who can't deploy their app for example.

If you can't:

a) Tell me what libs your app requires & how to install them in a resonable way b) The privledges required to run said app c) The security implications d) How to scale your app, particularly what I need to do to get it to behave over multiple servers e) be resonably sure your code is working f) Write some code to automate the deploy of this.

Then you're probably just not that amazing of a developer.

</comment></comment></comment><comment><USER12> If you want to work on the front-end, learning fundamental JavaScript will be your best asset. It will help you in job interviews, help you understand other developer's code, and help you make good decisions in your own code. The front-end is full of amateurs, it's easy to stand out as a serious developer by truly understanding the language of the web.

<comment><USER13> I do native front-end development currently. No JavaScript required.

There are enough native positions across all desktop and mobile platforms.

<comment><USER14> I wonder if I should look into native development or I can live with JS + backend (Python/Go/SQL) development.

Reason: end of 3 year government project with embedded software (which I really enjoy but hate the tooling)

<comment><USER13> Have you looked into Qt?

You might find some interesting stuff here from Qt World Summit 2015:

[https://www.youtube.com/watch?v=FUlRqjeEzuc&list=PLizsthdRd0...](https://www.youtube.com/watch?v=FUlRqjeEzuc&list=PLizsthdRd0YzYIFh5RCVG3xWsWqrX9yFw)

</comment></comment></comment></comment><comment><USER15> Discussion from last week: [https://news.ycombinator.com/item?id=10402912](https://news.ycombinator.com/item?id=10402912)

<comment><USER16> Not that I don't like this book, but how is it that it was allowed to be re- submitted in such a short time frame? A few months I can understand, but I literally still have this book open on one tab from the previous time I saw it on HN, because I'm slowly going through it.

</comment></comment><comment><USER17> High level in many areas "full-stack" is not as mythical as is suggested, it just takes someone with the right aptitude, and a long time over a lot of roles to get there.

Whether it does such a person any favours in the employment market is another question as you can't build businesses on rare commodities.

<comment><USER18> I thought the same. For me the harder parts is Dev-Ops and advanced SQL with anti-patterns.

Heroku and ActiveRecord with Redis helps mitigate that.

</comment></comment><comment><USER19> This has a weird bug where if you scroll down the right-side pane, the content disappears and the whole pane becomes white. Safari 9.0.1

</comment><comment><USER20> The first article is called "What is a front end developer?" and a good 20% of the page is devoted to explaining what headless browsers are. That's a confusing start.

</comment><comment><USER17> Dense, opinionated and somewhat bewildering. Which in a way represents the world of "front-end" in 2015 very well.

</comment><comment><USER21> I looked through this and I don't like this. Having been a front-end engineer in SF for nearly a decade the number one thing you need to know is computer science. The Steve Yegge hardcore engineering fundamentals that apply to computer science jobs anywhere also apply to the front end where engineers are building sophisticated client side applications.

There's little of that in this handbook. Once you know how to program and understand computer fundamentals, then you can build good software and you can take that anywhere, from native apps, to front-end to working on distributed backends.

If you just learn the things outlined there you're probably going to build, slow hard to maintain barely functional applications. You'll struggle at most technical interviews, and you wont progress.

As an engineer, computer science comes first.

<comment><USER22> I don't think the problem is the lack of comp sci fundamentals (although yes, there is that) it's that aside from part 1 -- a pretty pointless ramble about "the front-end practice" \-- this thing is a crazy collection of links to other stuff without much in the way of curation.

The author recommends three well-regarded books on UI design (I haven't read any of them, but I struggle on) but doesn't seem to have applied them to this handbook. Don't dump an unedited pile of crap on the user -- have an opinion and tell the user what you think they need to know, leave the list of resources to the end.

The problem with this thing is that it's not a "handbook", it's a collection of "useful" links.

<comment><USER21> I leave design to the designers. I think understanding how to use photoshop is a nice skill to have for working with designers, but I care more about a good engineering implementation for a mock than I do about the design ascetics of it. Front-end engineers aren't designers, they're engineers.

</comment></comment></comment><comment><USER23> There is a surprisingly wide area of coverage for something titled "Front-end Developer Handbook". I also like the way the content is presented (not the technology used).

The JS testing section is a good example. Pertinent summary of high level concepts before the fold. Additional content to read if you want to learn more.

[https://frontendmasters.gitbooks.io/front-end- handbook/conte...](https://frontendmasters.gitbooks.io/front-end- handbook/content/learning/test.html)

Edit:

By technology, I mean using a SPA for docs is silly. Not surprised the mobile experience is poor because of that.

</comment><comment><USER24> ...was once called a "web master". Was great, haven't heard that term in a long time, although as I recall it's "webmaster". I don't think "web master" was ever a term.

</comment><comment><USER25> Haha...Generalist myth

[https://frontendmasters.gitbooks.io/front-end- handbook/conte...](https://frontendmasters.gitbooks.io/front-end- handbook/content/practice/myth.html)

Well, if you chase the latest complicated framework, it will become more difficult to be a "generalist". As you become more aware of fundamental principles & patterns, you are empowered to do more.

</comment><comment><USER26> i cannot even get to the book on Firefox Android. maybe it only works with JavaScript? i just get one link "read it online" that takes me into a loop to the very same page.

it also does something weird, it prevents the browser address bar for scrolling out of view like it does normally when you scroll..

whatever this is, i truly hope what it teaches is not what the heck they're doing.

</comment><comment><USER27> This post is like an unnecessary splash page or something. Here's the download page: [https://www.gitbook.com/book/frontendmasters/front-end- handb...](https://www.gitbook.com/book/frontendmasters/front-end- handbook/details)

</comment><comment><USER28> What am I missing here? I've looked at it and it's just a collection of links to various resources. It's not quite the "book" I was hoping for.

</comment><comment><USER29> I think this is a great list but what would make it really useful is to have an explanation and opinion with each link.

</comment><comment><USER13> That is a WEB only front-end Developer Handbook.

I understand front-end as any UX for application UI.</comment>


Ask HN: How to do SXSW right? - <AUTHOR>

Wondering what YC companies have learned makes the most successful SXSW experience.<p>Crowdtilt (YC S11) had a great idea and is renting out Coyote Ugly[1], but wondering if there's any other advice I could source from the masses.<p>[1] https://www.crowdtilt.com/campaigns/sxsw-coyote-ugly <comment><USER2> Anyone?</comment>


Young designer is looking for a opportunity - <AUTHOR> http://iwouldlovetoworkwithyou.com/

<comment><USER2> where do you wanna work?

<comment><USER3> Hi! Sorry, didn't notice your reply, nor this post.

Generally, my goal is a graphic desgin studio/design agency, but I'm very intrigued by startups as well.</comment></comment>


Building Realtime APIs in Rust - <AUTHOR> https://lord.io/blog/2017/backtalk/ <comment><USER2> Where "realtime" here means "live" or "event-driven" maybe.

<comment><USER3> Yeah, if the events aren't timed this is no realtime. When there are no deadlines it is not hard realtime. When the deadlines are best specified in microseconds, now were talking realtime.

I was expecting something more interesting than yet another REST API.

<comment><USER4> For whatever reason, it seems like every new language/ecosystem is now judged first by its web-framework bona fides. Which is kind of a shame really.

</comment></comment></comment><comment><USER5> Not realtime as in real-time system, but as in representing wall-clock changes.

</comment><comment><USER6> Looks really interesting.

I've started to notice a series new http/web libraries that are using futures- rs and tokio-rs under hood.

Yours look really clean. Keep up the good work.</comment>


What Is Fracking? This Simple Animation Is The Best Explanation We've Ever Seen - <AUTHOR> http://www.businessinsider.com/marathon-oil-animation-on-hydraulic-fracking-2014-7?op=1

<comment><USER2> I call that oil industry double speak, propaganda.

[http://www.netflix.com/WiMovie/70129353?trkid=7203170](http://www.netflix.com/WiMovie/70129353?trkid=7203170)</comment>


Sessions Indicates Justice Dept Will Stop Monitoring Troubled Police Agencies - <AUTHOR> https://www.nytimes.com/2017/02/28/us/politics/jeff-sessions-crime.html <comment><USER2> Here's the quote the headline appears to be about:

"We need, so far as we can, in my view, help police departments get better, not diminish their effectiveness," Mr. Sessions said in remarks to the National Association of Attorneys General. "And I'm afraid we've done some of that. So we're going to try to pull back on this, and I don't think it's wrong or mean or insensitive to civil rights or human rights."

</comment><comment><USER3> This post should get a reward for how relevant it is to HN.

Removed in 3..2..

<comment><USER4> You seem to be under a mistaken impression of what this site is about. HN exists for the gratification of intellectual curiosity. That's not the same thing as following the political latest, critical though the issues of the day may be. Since HN can't be both kinds of site, this is an important distinction.

[https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html)

[https://news.ycombinator.com/newswelcome.html](https://news.ycombinator.com/newswelcome.html)

<comment><USER3> I don't understand how that applies to a minor political disagreement on which governmental level a police department should operate on.

Maybe I misunderstood this article as I'm not American, but I really couldn't see how this had anything to do with 'intellectual curiosity'. Can you explain it?

<comment><USER5> Not a minor political disagreement at all. The effort that's being curtailed is the primary effort in response to police killings of minorities--the primary effort to reform said police departments. Sessions is saying, in effect, the problem isn't the police, it's the communities themselves. This is the same tired conservative rhetoric that got us into the situation of minorities regularly being killed by police.</comment></comment></comment></comment>


How to Generate (Almost) Anything - <AUTHOR> https://medium.com/@howtogeneratealmostanything/how-to-generate-almost-anything-2161f29578b4 <comment><USER2> This is an awesome idea with inspiring projects. Pinar is showing both the functional and artistic applications of machine learning, and is ironically making it more human than robotic. I had a lot of fun to be part of the projects, and will hopefully be more involved in the future.</comment>


What is data science? - <AUTHOR> http://radar.oreilly.com/2010/06/what-is-data-science.html

<comment><USER2> The misnaming of fields of study is so common as to lead to what might be general systems laws.

For example, Frank Harary once suggested the law that any field that had the word "science" in its name was guaranteed thereby not to be a science. He would cite as examples Military Science, Library Science, Political Science, Homemaking Science, Social Science, and Computer Science.

Discuss the generality of this law, and possible reasons for its predictive power.

\-- Gerald Weinberg, "An Introduction to General Systems Thinking."

<comment><USER3> Counterexample: Neuroscience. But that's the only one I can find.

<comment><USER4> Materials science is my counter example.

<comment><USER5> Materials science isn't any more (or less) science than computer science is. It is applied chemistry.

</comment></comment></comment></comment><comment><USER6> Hm, what is the scale of the chart at the end (Cassandra Jobs)? My guess is that it went from 0 to 3 jobs...

Not that I dislike Cassandra, just that interesting jobs tend to be rare in my experience.

</comment><comment><USER7> I disagree with the whole premise that data science is the wave of the future. As soon as you collect a piece of information it is already out of date and is of very limited use. Weather scientists have been collection data since the beginning of the century and they are still no better at predicting the weather than they were at the beginning of the century. Economists are in the same boat. They have tons of data on markets but they still can't figure out what makes markets tick. What we need is not more data or data centric thinking. We need generative models that explain how the data is being generated and why it is being generated in a certain way. There is only so much you can squeeze out of raw data by computing numbers from it and so far I don't think the results have been that impressive.

<comment><USER8>
         already out of date and is of very limited use

Depends on the type of the information, news: yes,information about biology, or Geo-Information or encyclopedic: not so fast. on other hand we now have access to real time data.

         Weather scientists have been collection data since the beginning of the century and they are still no better at predicting the weather than they were at the beginning of the century.

Predicting Weather is near impossible in theory forget the practice. its a chaotic system, generally in data science we are trying to predict things which we know can be predicted, such as determining whether an article is relevant to a topic for example. Humans can do that very well but for machines to do it you need more data.

         They have tons of data on markets but they still can't figure out what makes markets tick.

Again markets are chaotic and are affected by things like low probability events. You can do predict some patterns using information asymmetry, thats what all those traders at Goldman Sachs and other firms do.

        We need generative models that explain how the data is being generated and why it is being generated in a certain way.

The systems that we are interested in have complex models, and generating them from first principles isnt always as easy, additionally even if you do generate you need to test them against real world data. Rather than using the normal hypothesis - experiment cycle, it makes more sense to look for predictable patterns in data.

        I don't think the results have been that impressive.

Thats because you are out of touch with the field. Look at Google's Statistical Translation results, for example, they beat every generative model around the town. Or netflix's prize for recommendation system.

As someone interested in Data Science and been quite involved with it for few years as a student and an intern let me try to explain why data science is now becoming an important area:

1\. We now have a lot of data in a machine readable format:

Unlike few years ago we now have huge datasets publicly available they, you have topic specific datasets such as Geo Names, Linked Geo data to much more wide encyclopedic datasets such as Wikipedia Data Dump, Freebase, Open Cyc, DBPedia.

We also have huge amount of user generated data, E.g. I have on my computer right now a huge chunk of twitters follower network consisting of 35 million users(I am writing an open source whom to follow system). Additionally I also have 100 million tweets.

2\. Not just data we now have access to real time data:

You can access the public twitter time-line, using their streaming api, there are quite a few pubsubhubub systems out there which combine information from disparate sources and provide you unified source.

3\. Moreover we have tools to handle the deluge [well sort off]:

Thanks to Google, Apache, Yahoo, Facebook we now have Hadoop , Map Reduce, Pig and other tools which make job of parallelizing processing of the data easier.

5\. We have a Scalable on demand infrastructure in place:

Using AWS we can buy processing power as needed. It would have been impossible earlier, I recently bought a high memory instance with 17GB Ram for 50 cents an hour for 10 hours to run some jobs. It would have been impossible few years ago. We can now also deploy web apps very easily using Google App engine and dont need to even pay a penny, this enables us to create nice interfaces for visualization and querying for the data at a low initial cost.

Finally we are slowly building infrastructure to sell datasets or custom apps. E.g. Amazon Dev Pay or Infochimps.

The name data science can though be misleading, if you are a student that would mean taking course in Machine Learning, Data Mining, Information Retrieval, Statistics, Distributed Computing, Databases.

<comment><USER9> _Predicting Weather is near impossible in theory forget the practice._

Are you really saying that everyone from pre-historic hunter-gatherer societies tracking the seasons to modern meteorologists with their supercomputers and satellites have been engaging in something theoretically and practically impossible? That would surely be staggering news to everyone involved.

<comment><USER10> The details of which days are going to be sunny a month out, which will be rainy, and when storms will arrive is chaotic and impossible even in theory to predict in detail more than a few weeks away. Practice is worse, there we manage no more than a few days, and this has been true for several decades.

That said, there are larger trends that can be predicted. For instance the seasons which come from astronomical facts. Or the several year El Niño/La Niña oscillation. Not to mention relatively slow moving Rossby waves in the jet stream. (One of which is bringing hot weather to Russia and monsoons to Pakistan right now.) These give useful information about what is likely to happen and keep happening over periods of weeks, months, and to some extent years.

But _none_ of this brings us any closer to the idea of being able to give an exact weather forecast for a day 6 months in the future. That goal is impossible. And has been known to be impossible for several decades. Furthermore I assure you that this fact is well-known to every competent modern meteorologist. (The word "competent" does not necessarily cover people chosen primarily for their appearance to deliver the weather report for local TV stations.)

<comment><USER11> According to this ECMWF planning document (page 14, figure 4):

[http://www.ecmwf.int/about/programmatic/strategy/strategy.pd...](http://www.ecmwf.int/about/programmatic/strategy/strategy.pdf)

the forecast skill for ECMWF and NOAA have been improving pretty steadily over the last 15 years. Basically, we're seeing two days farther into the future now than 20 years ago.

I agree that chaotic dynamics and various noise sources limit the time horizon for weather predictions to perhaps 2 weeks.</comment></comment></comment></comment></comment>


Nestur: NES Emulator in Rust - <AUTHOR> https://github.com/spieglt/nestur <comment><USER2> > _(Warning: this pipe currently takes you to an empty room, it 's not the > only one, and I don't know why.)_

If you look into speedruns you'll see that pipe behavior is very strange. One of the top speedruns involves pushing Mario into blocks in order to move the camera by something like 10 px, so that when you go down a certain pipe it goes to the warp zone instead of the bonus area.

Might be worth watching some videos about that speedrun and trying to trace what's going on in the code to allow that. It might get you closer to understanding your own pipe issue.

Unfortunately I don't have a link offhand, but search something like `perfect mario speedrun` and you'll probably find it.

<comment><USER3> I'll bet you a nickel something screwy is going on with the JMP Indirect logic. If it helps, Super Mario Bros. for the NES has been disassembled with _wonderful_ comments and labels:

[https://gist.github.com/1wErt3r/4048722](https://gist.github.com/1wErt3r/4048722)

At some point during every frame, shortly after the NMI routine completes, the game ends up on this particular line of code:

[https://gist.github.com/1wErt3r/4048722#file-smbdis- asm-L929](https://gist.github.com/1wErt3r/4048722#file-smbdis-asm-L929)

This calculates an address based on the current game mode, and then jumps there. When the player performs any action that changes the level, this mode cycles a few times while the game code blanks the screen, switches gears, and loads in new data. The indirect jump and branching logic that drive the game's mode switching are tricky to get right, and if they're wrong, this little kernel will break in surprising ways.

When I was troubleshooting my branching routines, I had my emulator pause on SMB's first indirect jump, then found that position in the disassembled code and followed along. I mean, you _can_ achieve similar results by unit testing or working to pass all of blargg's tests, but I found it much more fun to trace the emulator in a live environment, running "production" code.

<comment><USER4> > I'll bet you a nickel something screwy is going on with the JMP Indirect > logic.

You've lost a nickel! It was a problem with my signed-offset branch function where a bad cast was allowing 0x80 (-128) to overflow. It was really fun trying to troubleshoot by hooking certain memory accesses and subroutines, but what wound up fixing it was investigating the crash of Blargg's `instr_test-v5/rom_singles/11-stack.nes`. Thank you for your help!

</comment></comment></comment><comment><USER5> pcwalton wrote a NES emulator in Rust 7 years ago as a demonstration of Rust: [https://github.com/pcwalton/sprocketnes](https://github.com/pcwalton/sprocketnes)

Also, a nitpick:

> _One line of unsafe (std::mem::transmute:: <u8>() -> i8)_

You don't need unsafe for this, you can do that with an `as` cast.

<comment><USER6> Like the that your hobby might be opening Rust code, searching unsafe just for the thrills :)

Edit: Jesus kids, learn a little chill it was a joke. Someone didn't like this so much they went through and downvoted all my other posts they could. Wow... that's real serious.

<comment><USER7> It was mentioned in the README, and stood out to me as surprising (surely you don't need unsafe to cast from unsigned to signed bytes?)

<comment><USER8> Without knowing enough about Rust to speak authoritatively... u8 can represent larger integers than i8 (no sign bit). Surely it's _not_ completely safe.

<comment><USER9> `mem::transmute` is roughly equivalent to a `reinterpret_cast` in C++. It treats the bits of a u8 as an i8.

In the Rust definition of safety (mutable xor shared, no data races, memory safety, etc), treating the bits of a u8 as an i8 is safe and can be done with an `as` cast.

<comment><USER8> Thanks for clarifying that for me!

</comment></comment></comment></comment></comment></comment><comment><USER10> I recently wrote a NES emulator in Rust aswell. It was one of the most fulfilling side projects I've done. I did a brief write-up too: [https://ltriant.github.io/2019/11/22/nes- emulator.html](https://ltriant.github.io/2019/11/22/nes-emulator.html)

Kudos to getting to this point. Adding support for more mappers is a nice incremental thing that can be done at your leisure, and once you get save states implemented, playing games at your own pace is super fun :)

<comment><USER11> ADC = A + V + C

SBC = A - V - (1 - C)

SBC = A + (-1 * (V - (1 - C)))

SBC = A + (-V + (1 - C))

SBC = A + -V + 1 + C

I am not able to follow the mathemagic behind the third line. Is it normal algebra or its in 1's complement?

<comment><USER10> Wow, yeah, that's a bit off. And incorrect. It should end up being equivalent to:

SBC = A - V - 1 + C

Thanks. I'll fix this up :)

<comment><USER11> > but the - 1 is taken care of because of the fact that ADC and SBC do the > opposite thing with the carry flag.

Also, this line is bothersome, they do opposite things but that's why you have already done (1 - C).

Maybe the fact that -V is actually (!V + 1) (in 2's complement) that eats up the extra -1 is the correct explanation?

So,

      SBC = A - V - 1 + C

      SBC = A + !V + 1 - 1 + C

      SBC = A + !V + C

<comment><USER10> Ah yeah you're right. I had a brain fart and got my -V and !V confused.

At the time of writing I was sure I had it right too!

I'll fix that up. Thanks :)

</comment></comment></comment></comment></comment><comment><USER7> I noticed that both this and pcwalton's CPU emulation simply perform the operation, and increment the cycle count.

I'm curious: are the cycle-accurate reads and writes (and false reads and writes -- see [https://github.com/zellyn/a2audit/issues/5](https://github.com/zellyn/a2audit/issues/5)) not necessary for NES emulation?

I've never emulated a NES, only an Apple II. The cycle-accurate reads and writes are only mostly unnecessary, but they can make a difference, as the discussion in that linked issue shows.

<comment><USER12> It's equivalent to Apple II. You can get pretty far with the naive solution of atomically completing the instruction, and incrementing the cycle count appropriately, but there'll be some issues until you switch to a cycle accurate state machine with all the warts (false accesses, etc.)

NES actually gets a bit grosser because the PPU runs (IIRC) five cycles for every three CPU cycles or something like that, and you need to handle that case. I've seen some emulators that just run it off of a 15x clock, and sparsely run cycles on the CPU and PPU (but most of the master cycles don't do any work).

<comment><USER13> I think the NES PPU:CPU clocks are 3:1 for NTSC and 16:5 for PAL. The exact speeds are integer ratios of the color subcarrier frequency. The master clock runs at 6x the color subcarrier frequency, which gives you 12 different hues in the color palette.

<comment><USER12> Oh, yep, that's the ratio.

</comment></comment></comment></comment><comment><USER14> I wonder if the name "Nestur" is a callback to "Nester" from the "Howard & Nester" comics in Nintendo Power: [https://hn.iodized.net/main.htm](https://hn.iodized.net/main.htm)

<comment><USER4> Actually a nod to [https://adventuretime.fandom.com/wiki/Neptr](https://adventuretime.fandom.com/wiki/Neptr)

<comment><USER14> Ahh... a neat coincidence anyway. :)

Thanks for letting me know!

</comment></comment></comment><comment><USER15> I see an SDL dll file in the repo, and on my mac the build fails with `library not found for -lSDL2` -- is there something special I need to do to get this to build, or is it Windows-only?

<comment><USER15> Ah, `brew install sdl2` fixed it</comment></comment>


The Pirate Bay Will Stop Serving Torrents - <AUTHOR> http://torrentfreak.com/the-pirate-bay-will-stop-serving-torrents-120112/?utm_source=dlvr.it&utm_medium=twitter <comment><USER2> Hey! I invented the magnet link, almost 10 years ago.

Great to see it still evolving and spreading, based simply on its loosey- goosey merits.

<comment><USER3> It's weird, I've been seeing it for years but I never understood what it is. I still don't really.

But when I click on the magnets things seem to download immediately. So looks like you built something pretty amazing. Congrats!

<comment><USER4> It's basically a URI that contains the torrent hash enabling a client to find peers through a decentralized network such as DHT instead of requiring a tracker. I believe you can append trackers and other info to the URI as well, but I'm not sure about that.

<comment><USER5> Note: DHT = Distributed Hash Table

</comment></comment></comment></comment><comment><USER6> > Perhaps even better, without the torrent files everyone can soon host a full > copy of The Pirate Bay on a USB thumb drive, which may come in handy in the > future.

I've been saying this for _years_ : governments playing an arms race with hackers is like playing Whack-a-mole or cutting of heads of hydras. Every time you block one means of communication (starting in this case with Napster), a new, more decentralized, harder-to-combat protocol is going to emerge. Even if you're the MPAA and don't like copyright violations, you have to face that fact. That doesn't mean you (necessarily) have to throw in the towel and abandon the idea of copyright infringement altogether, but it does mean you need to start being creative instead of engaging in a direct legal- technological battle - an arms race.

I wonder how long it will take before the big players realize this and try to figure out a way to use this new playing field (the Internet) to their advantage, instead of trying to squelch any technological development so that they can cling to old models of payment and distribution. It was nice while it happened, but let's face it - we're past the point of no return. Even if they everyone hosted their own copies of TPB on their thumb drives and then they found some way to shut that down, I'm certain there'd be some hacker smart enough (like gojomo above) to come up with something that just makes things even less centralized, more difficult to track, and more difficult to shut down.

<comment><USER7> The big players are defeated by the new playing field. There is no "their advantage," there's just a major change in how we produce content.

It's away from exploitation of artists and the control of artistic message.

<comment><USER8> The production, the marketing the, distribution... EVERYTHING has changed for the music industry in about 15 years. They have no future unless the Internet is tightly controlled (which it cannot be.)

<comment><USER9> The RIAA and other major music industry players may have no future, but there is definitely a profitable future for a "music industry" populated by entities that are willing to adjust to the modification in distribution channels and consumption habits.

As it stands, the old-fashioned fogies are simply in denial and doing their best to prevent the marketplace from changing because they don't know how to use the new technology and they don't know how to succeed in the new marketplace. That doesn't mean that there's no future for the industry as a whole, it's simply the way entrenched players eventually die.

<comment><USER10> _they don't know how to succeed in the new marketplace_

Who does, in your opinion?

<comment><USER11> I'm with you on this one. It's less that the RIAA and major labels 'don't know how to use the new technology and...succeed in the new marketplace' so much as we're currently (still) in an in-between stage of market control.

Take for example Radiohead or Louis CK. Their previous successes allowed them to produce, release and distribute independently of big entertainment — but I don't think we're at the point where a small independent artist can effectively take their own music to market in a manner comparable to using a label. I don't have data to back this opinion, but high profile successes in independent distribution have been biased toward artists who were well-known and previously successful.

<comment><USER12> I don't think it is fair to compare Radiohead or Louis CK to that of a lesser known artist in this regard, because the bias is all in the media coverage.

Bands have been self releasing (outside of "big entertainment") since well before digital distribution, because signing to a label isn't always feasible (financially or creatively). Digital distribution makes just makes this even easier.

You only know about Louis CK & Radiohead because that is that the media covering. Digital distribution & artists self releasing material is happening and has been for a while, but no one knows because unless they are already into these lesser known bands & record labels. You have to think of it like this: "Lesser known artists can be more successful by releasing their own material digitally than they would by signing with a label." Or "This independent record label can lower their overhead and make things easier for their bands by embracing digital distribution."

</comment></comment></comment></comment></comment></comment></comment><comment><USER13> This site ([http://www.ghacks.net/2010/06/05/what-is-a-magnet-link- and-h...](http://www.ghacks.net/2010/06/05/what-is-a-magnet-link-and-how-does- it-differ-from-torrents/)) explains what Magnet links are and how trackers have traditionally worked in the past.

<comment><USER14> The original article had a link to this ([http://torrentfreak.com/bittorrents- future-dht-pex-and-magne...](http://torrentfreak.com/bittorrents-future-dht- pex-and-magnet-links-explained-091120/)) which I found a bit more helpful explaining the concepts.

</comment></comment><comment><USER15> It is still fascinating how resilient not only Piratebay but also others such as Demonoid have become. A few years ago it looked like they were close to getting shut down. It is impressive how they are now able to withstand all the "forces" and Governments had to shift their focus towards the ISPs.

</comment><comment><USER16> One drawback to magnet links is that you can not in advance see what files are there.

So if you only want to download some of them, you first have to wait for the magnet to download the torrent, then go back to it and pick the files you want.

A magnet link also makes it hard to check if the link you are looking at is a duplicate of what you have already.

With a torrent you can check the file size and compare to others.

<comment><USER17> There isn't really a reason the piratebay web interface couldn't display that info for you anyway.

<comment><USER18> If users only upload the magnet file, the TPB wouldn't even know how big the file is, unless their servers queried the DHT for the .torrent file and extracted the data.

<comment><USER19> Right, that's what they'd have to do.

</comment></comment></comment></comment><comment><USER20> Can someone fill me in on the first step a client (BT) would take to find its first peers? That part is a bit magic to me right now. What would be the first IP it would query and how would it know?

<comment><USER21> There are three main methods (in order of preference):

1\. Use a cached list from a previous run. This is ideal in terms of load balancing, and also helps with bootstrap time if your IP hasn't changed, so all major torrent clients have such a cache.

2\. Ask peers you're connected to via a traditional tracker and .torrent file. This is the next best thing, but can only be used if the first torrent you download is via a traditional tracker.

3\. Use some bootstrap peers hardcoded into the torrent client. Has a single point of failure, but it works.

Each torrent client can use a different set of bootstrap peers, note - they're nothing special, just a DHT peer that has the bandwidth and CPU power to deal with bootstrap requests (which isn't a very high hurdle - you only get hit once, on the initial install, or if the client's been shut down for so long it no longer has any valid peers). Or the user might even supply their own, if need be.

<comment><USER22> Thanks for the information, this part was always a mystery to me as well.

To clarify, if someone has never downloaded a torrent before and starts with a rarely downloaded file, would the use of only magnet links mean they will probably not be able to find another peer? It sounds like unless you already have torrents downloaded, your list of possible peers to check for the file is very short.

<comment><USER23> If your client connects to just one peer you essentially gain access to the entire bittorrent DHT network. As a dramatic simplification, your request for the rare torrent would propagate until it found the peers seeding or downloading it.

<comment><USER24> But what if the users sharing the file are also connecting for the first time? It seems like if my friend wants to seed a file and I want to download it, it only works if we knows peers (who know peers who know peers who...) know peers of me. Is this correct?

<comment><USER25> In theory (assuming that there are links to everyone, and no way to have separate networks) (it's of course a theory only, but seems very likely that there are "massive users", who have files of "every kind", connecting the different groups), as long as you both connect to one who is connected, it will work.

Although this is quite the extreme case, and not really the purpose for Bittorrent to begin with, I guess. The main interest is load balancing of popular downloads, not finding the one person with the one file for you.

<comment><USER9> I've actually found torrents to be a great way to share large files with a friend. There's no invasive upload dialog or locking, no practical filesize limitations other than the free space on my friend's computer, you don't have to upload to a public-facing server before your associate can start downloading, port forwarding is handled transparently by UPnP, client software is user-friendly, easily available, and often already running anyway, and it's easy to scale if another friend wants a copy at some point in the future.

Of course, TPB switching to magnets doesn't really affect this. Torrent files are still used to provide information on the download, they're just distributed from within the P2P network instead of TPB itself. If you have a torrent file to share with an individual or small group instead of the whole world, there's no reason to stop using torrent files directly.

</comment></comment></comment></comment></comment></comment></comment><comment><USER26> For a brief moment, the title sounded like TPB was going to blackout for "stop SOPA day". Wouldn't that be funny.

<comment><USER21> If the TPB were to actively oppose SOPA, it would just give the SOPA proponents more to work with - "Look, TPB is against it, so it must be a good thing!".

<comment><USER3> Brilliant point. Pirate Bay's best approach is to laugh at SOPA and make clear it will do nothing to stop them.

<comment><USER27> Actually, one day the placed a video instead of their logo created by multiple users with messages against SOPA, it was this one: <http://www.youtube.com/watch?v=1w6GtwOvnWM>

</comment></comment></comment></comment><comment><USER28> So, what if you don't run the client on the same machine you're browsing TPB with, like people who have torrent enabled routers or VPS/seedboxes? I suppose you can copy-paste the link to your client, but clients which had automatic pick-up of .torrent files (like rtorrent) were nice because you could just drop them on a remote directory and have them be downloaded.

I wonder if I could write a small application just to download the torrent file from the magnet link/DHT to copy it to the remote server afterwards.

<comment><USER29> See the shell script in the top comment here: <http://libtorrent.rakshasa.no/ticket/2100>

I tested it, and it works as advertised.

For firefox integration, in about:config create a new boolean as:

      network.protocol-handler.expose.magnet := false

For chromium integration, you need to use Xdg-open.

</comment></comment><comment><USER30> They announced that they were planning on doing this right when magnet links came out. I haven't used .torrent files since I discovered magnet links and I actually find they more convenient than downloading a torrent file.

</comment><comment><USER31> I've been using mostly magnet links for the past year and haven't experienced any issues. If people understand that they work just like a normal link/torrent file, this won't make the process any more complicated. Hopefully this is another win in the long run, as links are harder to stop than files.

<comment><USER32> Only slightly as I understand it, since from a legal perspective the _intent_ of someone providing providing links instead of files doesn't change, and that's what counts.

From a technical perspective, and as someone who doesn't understand how magnet works under the hood, I'm slightly concerned that DHTs might be easier to attack in an underhanded manner than an HTTP server would have been.

<comment><USER31> "Only slightly as I understand it, since from a legal perspective the intent of someone providing providing links instead of files doesn't change, and that's what counts."

Indeed, but a link can be posted anywhere a user can post text. Here, have Pioneer One:

magnet:?xt=urn:btih:3a4be1d48c31dfa62bf52958f3fdca3d5ce91cf1&dn=Pioneer%20One%20SEASON1.720p%20x264-VODO

I can see this leading to a block on many sites on all links starting with the "magnet"-protocol, if it's not in place already. It also highlights the issue with SOPA further. Had that series not been allowed to be shared, Hacker News would be in big trouble for hosting the link.

<comment><USER33> That would be a restriction of freedom of speech and Internet Freedom for blacklisting magnet urls.

Linux Distro excuse comes to mind.

A cynical person might say that the intent would also further kill free content creators, restricting the supply of content; consumers then see only paid content.

<comment><USER31> Sadly, that hasn't prevented censorship of "neutral" keywords before. See: <https://torrentfreak.com/googles-anti-piracy-filter-110712>

<comment><USER33> Wow, I didn't see this before. I can understand filtering certain terms for court requests, but voluntarily? It looks like Google is attacking distribution methods of content with such broad filtering. Probably to make compromises with the anti-Internet activists. Now judges can interpret it to mean that Google can happily censor any results for certain words as it has been done in other anti-Internet regimes. What scumbags all round.

<comment><USER34> Note that this isn't filtering the terms for search, just filtering them for auto-complete. As in, if I type "lord of the rings" it won't suggest "lord of the rings torrent" even if that is the most common or one of the most common searches beginning with "lord of the rings."

If you actually type "lord of the rings torrent" and hit return, Google will still do that search and return relevant results.

They are doing this because for many pieces of popular media, the torrent search was fairly high in the list of most popular searches, and they don't want to be seen as suggesting that you download the torrent. Likewise, they won't autocomplete obscene or porn related terms, but will still do searches for them.

There is a difference between banning a term entirely from their search engine, and deciding that it's not something that you want to suggest to people who haven't requested it, to avoid suggesting illegal acts, avoid legal trouble, avoid offending people, or the like.

<comment><USER33> My concern was mostly due to this statement:

"This is something we looked at and thought we could make some narrow and relatively easy changes to our Autocomplete algorithm that could make a positive difference, Cano added."

They believe in filtering broad innocent terms in them as a solution to copyright infringement rather than saying "No no, we can't filter broad terms, especially innocent uses of it. Not only does the language evolve, but the infringers can adopt innocent names like congress:<link to song>. We need to intelligently handle copyright infringement without hurting access to legitimate websites."

It looks like part of doing SEO now is to be aware of avoiding broad innocent terms. I hope the unaware people don't get caught in Google's broad autocomplete filter.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER35> Talking about magnet links I remembered KAD with ed2k and eMule. Its almost same. Bittorrent with magnet links just have different chunk size possibility to make faster download with smaller piece size.

<comment><USER36> According to Wikipedia, magnet links are in fact based on ed2k and Freenet URIs.

</comment></comment><comment><USER37> From what I understand, DHT has a big trade-off vs BitTorrent: DHTs are crawlable[1] and copyright holders can more easily track who holds copies of what yet it's easier to duplicate search engines like TPB within hours for the same reason.

So the effect seems to be that the RIAA, MPAA, etc. will likely not be able to take down trackers; they'll have to revert back to suing their "customers" (or lobbying to pass absurd legislation for that matter).

[1] [http://z.cs.utexas.edu/users/osa/unvanish/papers/vanish- brok...](http://z.cs.utexas.edu/users/osa/unvanish/papers/vanish-broken.pdf)

</comment><comment><USER38> It seems that TBP just taken another step to push judge and jury's confusion during next trials even further. "Y'know, we're trying to shut down pirates' secret base that... doesn't serve a single file!"

</comment><comment><USER39> What I'm wondering is whether it's not yet possible to have a distributed, decentralised torrent database.

You could already put up a copy of the database as a torrent and distribute the magnet link, but you'd need some method for efficiently keeping it up to date.

<comment><USER40> DHTs/Torrents are great for static data (like a movie) but bad for dynamic data, like a website with a list of movies, their ratings, user comments, etc.

There are, however, other systems that are designed to combat this, like freenet. They tend to be overwhelmingly slow, because you need to pass lots of data around to make it consistent.

Then again, magnet links, titles, and a little html are probably not a lot of information, so it probably could be done. I just haven't heard of any attempts yet. It's tempting to go and write one. Could you make a decentralized, P2P version of reddit with distributed trust? I think it's possible but hasn't been tried.

<comment><USER28> I think the easiest way is to not make it really "dynamic" but an append-only structure of static content. For example a Reddit thread might be representable as a static list of actions (add reply, upvote, downvote, etc), which the client would process to get the current state.

That way, you could immediately download an earlier version of a resource and then get the updates as they spread through the network.

<comment><USER41> a la bitcoin.

They have a big problem in their design where currently it works exactly as you described, and at "some unknown point in the future" when the database of all transactions EVER in the history of bitcoin gets too big for each person to have to have a copy of in order to add another transaction, they'll "figure out a way" to make it unnecessary.

<comment><USER42> Can't they somehow publish the current state of things, let anyone who wants to verify it from the public record building a web of trust, then go from there forward?

Or is there some subtle flaw in that idea?

</comment></comment></comment></comment></comment><comment><USER43> I hope that before .torrent files are gone, they (or some scraper) will publish them all as a torrent.

Somebody did that last time PB was in trouble, e.g. one of the pieces: magnet:?xt=urn:btih:4232363a47fe29acdf2c77874365a5e3368854b4&

That's a pretty interesting dataset to mine.

<comment><USER6> Why? What would the point of the .torrent files be if the magnet links are still there?

</comment></comment><comment><USER44> > _This is topical, since this week courts in both Finland and the Netherlands > ordered local Internet providers to block the torrent site._

Is there a list of countries where this has been ordered by courts? I know it's already the case in my country (Belgium) as well[1].

[1]: [http://torrentfreak.com/belgium-starts-blocking-the- pirate-b...](http://torrentfreak.com/belgium-starts-blocking-the-pirate- bay-111020/)

</comment><comment><USER45> Since they are doing this big change, is there a way to make it more secure on the user side, too? Like encrypt the traffic and make it impossible for RIAA to track IP's?

Also since they say that it's like every user would have the TPB site on their computer, does it mean blocking the site would be completely useless? And since they are just links, and links are pretty much speech, I figure it would be impossible to turn it into law as well, to specifically target magnet based sites like TPB.

<comment><USER46> The entire design of Bittorrent is predicated on clients advertising to each other which torrents they're seeding and which pieces are available. You can encrypt your traffic to get it past your ISP's deep packet inspection, but the peer at the other end has to be able to decrypt it. And you have no way of knowing what nefarious organization controls that peer.

</comment></comment><comment><USER47> Don't the torrent files contain all the hashes for each piece? Doesn't that mean if a single piece is bad, the entire torrent can't be verified? Torrent files contain a lot of useful data that isn't found in a magnet URI. Is this just being ignored?

<comment><USER48> The hash in a magnet URI is of the info dictionary in the .torrent file. It's used to query the BitTorrent DHT for peers running the same torrent. Once another peer is found, your client will download the full metadata file from it, and from there it works just like any other BitTorrent download.

<http://bittorrent.org/beps/bep_0005.html> <http://bittorrent.org/beps/bep_0009.html>

</comment></comment><comment><USER49> This is definitely a step in the right direction. Not saying this is a good step to increase piracy, but there really is no need for trackers when we have magnets, and this will lead to a healthier bittorent community.

</comment><comment><USER50> How does this change the process for uploading a new torrent to TPB?

<comment><USER51> For the time being, nothing. However, once TPB goes full magnet you'll just submit a link instead of a file. It should make the process easier.

</comment></comment><comment><USER52> Can anyone say what the gist of this article is? Blocked from torrent sites at work.

<comment><USER53> Piratebay will now serve magnet links by default instead of .torrent files. For the average user, not much will change. For some particular use cases, there may have to be adjustments.

</comment></comment><comment><USER54> Pirate Bay is the BEST torrent site ever created. It's a pity they are switching to Magnet. :( It would be so cool if they provided both (Magnet and Torrent)...</comment>


Planet - Python realtime framework, the framework behind battlefields battlelog - <AUTHOR> http://www.planetframework.com/tour/

<comment><USER2> For reference: _Battlelog: Modern Web Applications are Here_ (blog post by Werkzeug/Flask dev) [1] and HN discussion [2].

[1] [http://lucumr.pocoo.org/2011/11/15/modern-web- applications-a...](http://lucumr.pocoo.org/2011/11/15/modern-web-applications- are-here/)

[2] <http://news.ycombinator.com/item?id=3236820>

</comment><comment><USER3> To all the people wondering: "why is this better than Flask" or "why should I pay XXXXX$ for something I can get for free". The huge difference is the fact that by purchasing this you have a right to ask for support and if it doesn't work out maybe even sue them. If you are running Battlelog XX thousand dollars is nothing. Imagine what it would cost them if Battlelog was down for a day. If they used Flask they may depend on Armin being available to fix a critical difficult bug. That is why these companies pay the big bucks: support and accountability.

<comment><USER4> There seem to be two approaches when a problem occurs:

\- Find someone to blame (sue them)

\- Fix it (myself or pay someone to fix it)

I like to use tools that give me the second option (and planet probably does, but I disliked the "maybe even sue them" - better to have the freedom to fix than the freedom to sue).

<comment><USER5> Planet Framework is designed from the ground up to be real-time and scalable, but it also uses a lot of existing open-source projects.

For Planet Framework customers, we offer "partner source". Meaning, that customers will get full access to source code and also submit their own patches.

<comment><USER6> Are you also going to open-source some parts of the project?

<comment><USER5> A couple of the components used are actually already open-source:

<https://github.com/esnme/ultrajson> \- Super-fast JSON serializer.

<https://github.com/esnme/locust> \- Scalable load testing tool capable of simulating millions of users.

<https://github.com/esnme/amysql> \- 100% async/event driven MySQL driver.

<https://github.com/hjlarsson/gevent-memcache> \- memcached driver for gevent.

<comment><USER7> Thanks for this list.

We've been building our own load testing tools on python, and it will be quite helpful to learn from the implementation of locust.

</comment></comment></comment></comment></comment></comment><comment><USER8> Not sure what to think about this. Seems very well documented and thought out, and the developer tools seem great. However, the price is very steep. It's a bit unusual to see Python frameworks with this kind of pricing. Perhaps I'm too used to open source, though.

</comment><comment><USER9> The video runs into an edge/problem case inside of the first 60 seconds, the solution to which is apparently something you have to memorize or get used to.

"...to add a component I do this... you see the error here saying that... to fix it, just click on this word and hit alt+enter.."

I couldn't continue after that.

<comment><USER10> That's just laziness on your part.

Do you expect them to explain all the concepts and underlying code in one video?

Also, the click+fix it thing actually showcases a very helpful IDE feature.

<comment><USER9> What I was pointing out was bad defaults and a lack of polish. The very first introduction should not start with a warning or an error case. When I'm learning "yet another server technology and IDE", I don't expect to walk through a bunch of exceptions just to get started. It's a big turn-off.

Check out any of the recent string of popular technologies and see how much effort people put into making smooth first impressions.

</comment></comment></comment><comment><USER11> This looks very interesting, though it definitely needs a free edition for developers to play around with. Perhaps limit the maximum number of concurrent clients or other artificial scaling limits. At €99/month there's no way I'd try this out even for 1 month; these prices are definitely targeted at the enterprise.

</comment><comment><USER12> I wonder if the timing of this release (and the relation to the Battlefield 3 web presence) is a poke at Activision's infrastructure/scaling problems of the Call of Duty Elite web platform?

The problem of large dynamic (to avoid "real-time") distributed web applications with big teams of developers that have to scale quickly sometimes during crunch or for emergency scaling post-launch, is not the easiest thing to solve so it's nice to see products aimed specifically at that space.

</comment><comment><USER13> Seems like they are using a derivative of PyCharm for the IDE-part?

<comment><USER14> Indeed, I wonder if they have a deal with Jetbrains for that.

<comment><USER5> Yes, we do.

</comment></comment></comment><comment><USER15> For some definitions of real-time.

</comment><comment><USER16> Why did they invent _yet another_ framework-specific template language? What is wrong with Jinja2 and Mako?

<comment><USER5> The reason behind "yet another template language" is that we compile down to both Python and JavaScript. Allowing us to render templates both on the server-side and client-side. Sharing templates between these two gets very important when you develop real-time web sites.

(I'm one of the developers behind Planet Framework)

<comment><USER16> Ah. That makes sense. Both Jinja2 and Mako are very much tied to Python. (Though compiling a subset of Jinja2 AST's to JavaScript would be an interesting exercise...)

</comment></comment></comment><comment><USER17> Ok, nice fancy IDE. I use vim, how is this different to me compared to flask/django? If it is repetition of code in the templates you want to avoid, what about noir+hiccup?

I don't know, am I missing something?

<comment><USER18> Isn't the IDE similar to IntelliJ Idea or PyCharm?

<comment><USER19> It's based on PyCharm from the "Licenses" page.

ref:<http://www.planetframework.com/documentation/1.10/Licenses/>

</comment></comment></comment><comment><USER20> Someone has recently mentioned that this framework is soon going to be "released". Was it meant as in "free to use"? The pricing is quite steep, but otherwise it looks amazing.

</comment><comment><USER21> Not to be confused with Planet[1], the feed parser/reader).

[1]: <http://www.planetplanet.org/>

</comment><comment><USER22> I'm not sure I'd use BattleLog as the shining example of our framework. Battlelog is quite flaky and not as responsive as it should be.

<comment><USER23> When have you experienced this? I've found it to be pretty rock solid. Especially compared to the game client...

</comment></comment><comment><USER24> Not a great advert to have an internal server error on the contact page!

</comment><comment><USER25> When I saw real-time, I thought you meant real-time as in medical devices, where data incorrectly processed in the interval means someone may die.

I believe that would be a novel and very interesting use of Python, possibly even requiring a new interpreter...</comment>


Code branching isn't required even for complex multi project environments - <AUTHOR> http://www.thoughtworks.com/perspectives/30-06-2011-continuous-delivery#face-to-face?contactID=159080380&gwkey=ED3OMQ5XR9

<comment><USER2> Not required? How many things -are- required? I'm guessing the number is near zero.

Talk to me about pros and cons, not requirements.

</comment><comment><USER3> The video puts down "Feature Branching" which is a very specific kind of "Code Branching."

I've seen Feature Branching work for some shops, but it can also create problems -- the more complex version control strategy you use the more likely you're going to make mistakes implementing it.

The "standard model" for branching that's most commonly used is to do most development in HEAD and make branches for releases. If you spin version 1.1 of your product, you should make a 1.1 branch, which starts with, say, version 1.1.0. If you find a terrible bug in 1.1.0, you can go back to 1.1, develop the 1.1.1 version, and then you can merge the bug fixes back into head.

The "standard model" minimizes the number of merges that need to be made while assisting maintenance of deployed software. Other branching models do worthwhile things, but the ratio of merging/benefits is invariably worse.

</comment><comment><USER4> For git, code branching is really really easy (even without some tool/model like gitflow).

To me, it's like reading "Onions, not required even for complex multi-course meals". Why would you avoid that!

</comment><comment><USER5> I've adopted the following branching model: <http://nvie.com/posts/a-successful-git-branching-model/>

Works like a charm for us.

It doesn't mean we don't update production as often as possible but we sure sometime need to push hot fixes to production quickly while working in parallel on new features. I would say branching is a necessary evil.

</comment><comment><USER6> This guy doesn't seem to understand that you can merge your main branch _into_ your feature branch constantly if you want.

This makes all of his points invalid.</comment>


Show HN: Tweetline.fm - Browse Twitter visually, Pinterest-style - <AUTHOR> http://tweetline.fm

<comment><AUTHOR> This is a web-based hack I built this week to try bringing a visual appeal to Twitter, as Twitter's UI is currently text-focused and doesn't allow for any visual curation. It lets you browse by having a quick overview of tweets' attachments (picture, video, text extracts, whatever I can get). Hope you'll enjoy it!</comment>


Why are you doing a startup? - <AUTHOR> http://blog.jasonhanley.com/2012/07/why-are-you-doing-startup.html

<comment><USER2> A refreshing perspective here - particularly the part about not trying to compete with the market leaders, but instead carve out your own niche..</comment>


Every major OS maker misread Intel's docs. Now their kernels can be hacked - <AUTHOR> <comment><USER2> I used to participate in a team that proposed problems for mathematical competitions for middle schoolers. The mathematical part was easy, but it took time to find something interesting for out target students. But the really hard part was writing the problems without ambiguities. But still after the tests we found cases where there were misinterpretations.

If everybody is misinterpreting your documentation then probably it is your documentation that is wrong. Intel engineers are involved in the linux open source kernel development, if they were not able to interpret correctly those documents then it is a bit too much to expect other to understand it correctly.</comment>


Europe's top court sharpens guidance for sites using leaky social plug-ins - <AUTHOR> https://techcrunch.com/2019/07/29/europes-top-court-sharpens-guidance-for-sites-using-leaky-social-plug-ins/ <comment> ga-vu So are they outlawed or not? The article doesn't clearly say it.</comment>