Frame-Based Editing [pdf] - <AUTHOR> https://kclpure.kcl.ac.uk/portal/files/71018111/Frame_based_editing.pdf <comment> kot-behemoth There is an app called Lisping which allows writing a variety of Lisps (Scheme and Clojure) on iPads. The great thing about it was that there was minimal typing - the interface made the AST very clickable, with minimal cursor movement. When I tried it, it was such a great way to edit code on an iPad. Demo video: [https://www.youtube.com/watch?v=nHh00VPT7L4](https://www.youtube.com/watch?v=nHh00VPT7L4)

<comment><USER3> Wow, I watched the whole video and all I can say is -- huh?

That looked totally painful, and not at all fun. Granted, much of this is due to the fact that it's a touch interface, but I'm not seeing it as very useful.

I'm a huge Lisp/Scheme/Clojure fan, but I didn't find this at all impressive.

<comment> aaron-lebo Yeah, it's really hard to see the utility in that.

That literally takes 10x longer to enter anything than it does in a decent editor. I imagine some vim and emacs wizards can edit even faster than that.

Dumb snark incoming but it's like using a hammer to chop wood.

</comment></comment></comment><comment><USER4> Coincidentally I just started working on an editor for touch screens that relies on displaying nesting like this. I also worked on a syntactic zoom which I'm sort of proud of, but don't know how practical it could be yet.

Editing is still in progress but I have a read-only demo at [https://gashlin.net/tests/ecola/hn/](https://gashlin.net/tests/ecola/hn/)

<comment><USER5> On a ms surface running chrome 59, that pinch zoom feels nice

</comment></comment><comment><USER6> The core thesis of this work is "that text is an inappropriate way to model structured program code". I think that is wrong, text is a great way to model structured program code.

That doesn't mean that the ways we use text these days for programming couldn't be improved and augmented. For example, the example in Figure 3 is very pretty and readable. But there is no reason why this couldn't be what you see when still editing everything as text. Basically, it could be a more advanced form of syntax highlighting. The reason why this is difficult/impossible to achieve with Java is because of Java's syntax.

Therefore I think when approaching programming from a user interface point of view, it is crucial to also work on a better syntax for the programming language itself. Ideally, work like described in this paper should go hand in hand with work to develop better syntaxes.

<comment><USER7> IMO, the big problem with text as a representation of (imperative) code is that it only represents the program's execution flow; the visualization of the flow of data must be done in a person's mental model. The side effect of this is that a programmer must build the proper mental model anytime they want to make a change, or they risk mucking up the data. Object orientated programming was an attempt at localizing data changes, at the cost of complicating the overall flow of the program's execution.

Representing the flow of data and not the program is one advantage that many functional languages have, at the cost of removing the visualization of the program's flow. Often this doesn't matter, but sometimes it does. When it does matter, you're faced with the same challenge for the programmer.

So ultimately, even the best syntax can only help you model one thing - <USER2> the flow of the data or the flow of the program - and the other flow must be modeled internally. It would be cool if both could be visualized by our tooling simultaneously.

</comment></comment><comment><USER8> Yeah, it's a pretty good idea. I've been using lisp and expand-region[1] and it just makes this frame-based editing dream come alive.

I've just recorded a video where I'll refactor some code for fun. This code adds two arrays one has strings in it like ["1" "2" "3"] the other has numbers like [1 2 3].

Video: [https://s3.us- east-2.amazonaws.com/photoblobs/2017-06-22_003...](https://s3.us- east-2.amazonaws.com/photoblobs/2017-06-22_003949.mp4)

I do have a couple typos / mis-compiles but that's sort of par for the course. Hope you enjoy!

[1] - [https://github.com/magnars/expand- region.el](https://github.com/magnars/expand-region.el)

<comment><USER9> Exactly

</comment></comment><comment><USER10> Regarding coloring, I created a simple Ruby editor with syntax highlighting that features...

\- Indentation based coloring of whitespace

\- Nesting-based coloring of parentheses

You can try it out here:

[https://broxp.github.io/ruby-ide](https://broxp.github.io/ruby-ide)

Of course, these ideas are not new.

There are plugins for IDEs for some languages, one that I recall is the F# depth colorizer:

[https://cyanbyfuchsia.wordpress.com/2013/11/18/cool- visual-s...](https://cyanbyfuchsia.wordpress.com/2013/11/18/cool-visual- studio-extensions-for-f-developer/)

And there is parentheses highlighting in Eclipse (when touched by the cursor).

</comment><comment><USER11> Is this essentially wrapping each scoped segment of code into a "frame" for manupulation using a mouse?

I must be misunderstanding, how can this be more useful than plain text? Eliminating syntax errors?

<comment><USER12> Not just with a mouse. The frames can be detected automatically. Imagine a typical IDE where:

      while (...) {

Automatically inserted the next `}` and moved the cursor between it. But in the frame based editor, the `{` and `}` are elided from the presentation, replaced with a colored block or frame around the inner kernel of the while loop.

      +++ while (condition)
      +   --- if (condition)
      +   -   *** actions
      +   </comment></comment><comment></comment><comment></comment><comment>
      ++++++++++++++++++++++

Scratch (the example in Figure 1) is definitely a mouse driven interface, but beyond that and its visual presentation, it's more a cousin to the frame based model than a precise representation.

It gives you a better (arguable?), structural way to view code, and to edit it with both text input and mouse.

<comment><USER13> Yes, it's arguable. :)

(curmudgeon)A well-formed program is "defined" as what the compiler expects. Like literate programming, this hides from me what's being presented to the compiler, and sets me adrift from what the program actually is.(/curmudgeon)

It also reminds me vaguely of writing with Framemaker.

<comment><USER14> >this hides from me what's being presented to the compiler

Isn't that the whole point of abstractions? Like, when you write a function call, you see "foo()" but the compiler sees all the individual instructions in the function. The same with macros, templates, etc.

And on a purely visual level, the example 'jtsummers gave just seems to be an extension of code folding and other tools that let you focus on one part of the code while ignoring another.

<comment><USER15> The essence of programming is being capable of constantly walking up and down the abstraction ladder. Trying to hide behind a perfect abstraction is as problematic as the belief that abstractions are evil because they're too complicated.

Abstractions are transient. You want to use them when they help you, but it's good to be able to step down and verify what's going on.

<comment><USER14> >The essence of programming is being capable of constantly walking up and down the abstraction ladder ... it's good to be able to step down and verify what's going on.

Good, yes, desirable, often, but I wouldn't call it "essential" to the art of programming.

I once worked for a company whose data was managed by a COBOL application on a mainframe a couple hundred miles away; there was no walking down that abstraction ladder (without shelling out a five-figure support fee), so our in-house IT department had to take advantage of the fact that the 3270 terminal emulator we used to access the mainframe, could be driven through a COM interface.

I'm sure there are lots of other examples of jobs that don't have the luxury of being able to step down and verify lower-level code, and I wouldn't characterize them as missing out on some "essential" aspect of programming.

</comment></comment></comment></comment></comment><comment><USER16> Reminds me of Construct : [https://static2.scirra.net/images/fresh/c2/gallery/fullsize/...](https://static2.scirra.net/images/fresh/c2/gallery/fullsize/jpg/eventsheet- edit-01.jpg)

<comment><USER10> Or programming in the RPG Maker:

[http://d289qh4hsbjjw7.cloudfront.net/rpgmaker-20130522223546...](http://d289qh4hsbjjw7.cloudfront.net/rpgmaker-20130522223546811/files/screenshot- rpg-maker-vx-13.jpg)

</comment></comment><comment><USER17> I wrote a similar post, though much shorter and less detailed. Nevertheless eerily similar: [https://medium.com/@grgtwt/code-is-not-just- text-1082981ae27...](https://medium.com/@grgtwt/code-is-not-just- text-1082981ae27f)

Greenfoot really was the biggest inspiration, but I'd really like to build something more general purporse. Aka pass in a grammar file and then you can use the editor for that language.

</comment><comment><USER18> This is pretty incredible work wrapped in an unassuming name. It basically presents an entirely new way to interact with any programming language. You could make an emacs mode that worked this way, for example.

I could see this being one of the fundamental ways of overcoming Lisp bias. Lisp still isn't mainstream. Clojure was a nice attempt, but it fell short. You can find companies that use Clojure, but it's not the lingua franca of any domain (except perhaps text editors).

If you were to expose a way to write Lisp without dealing with any parens at all, it might have a chance of sparking the interest of younger programers long enough to seduce them to Lisp's other benefits: when you write in Lisp, you're writing in the abstract syntax tree normally generated by other languages. This allows you to write macros, which transform the tree in arbitrary ways. It's trivial to write a program to analyze your entire codebase in arbitrary ways (what are the most popular function calls? what's my dependency graph look like? which functions are unreferenced?) which is normally a herculean effort in other languages.

And it all comes down to syntax. `(if a (b) (or c d))` is so utterly _foreign_ to most programmers compared to `if (a) { return b(); } else { return c || d; }` that it's nearly impossible to overcome the inertia long enough to persuade them that the tradeoff in readability is worth the power you get.

I think this work could be helpful here. When you throw a newcomer in front of a Lisp editor and say "Write a program," what goes through their minds? "How do I write an if statement?" "How do I call a function?" "How do I set a variable?" "How do I loop while a condition is true?" All of these are abstract concepts, not specific to any language, let alone Lisp. That'd let them avoid dealing with parens altogether. Then you can introduce the idea of a macro, which just combines new ways of using existing concepts.

Regarding color: I've often wished for colored quasiquotation. `(foo `(bar `(,baz))) would be more useful if your editor displayed the background color differently for each level of quasiquation. It would also de-mystify statements like (fn (x) `(define-macro foo (y) `(define ,y ,',x))) which can otherwise be incredibly difficult to reason about. (Thankfully nested quasiquotation is rare, but suffice to say I wish editors used color more effectively rather than stylistically.)

Sadly, emacs is one of the only editors flexible enough to implement the concepts presented in this paper, and the intersection between emacs users and novice programmers is about as large as the intersection between hackers and MBAs. But you can flip it around: emacs _is_ flexible enough. That means you can ship a custom preconfigured emacs designed specifically for Lisp hacking, set up to mimic Atom/Coda/Sublime/whatever.

<comment><USER19> I keep hearing this kind of talk about lisp. I've never actually written anything in it, but if you asked me why, it would have nothing to do with parens or syntax. It has everything to do with the fact that, for most purposes, Python suits me just fine, and for almost all other purposes, I want a language that compiles to machine code.

Lisps just don't bring much to the table. Their dynamic-ness brings overhead that is not justified _unless_ you're doing crazy macro stuff, and ad-hoc crazy macro stuff is not easy to put into code without hurting readability and comprehension.

<comment><USER20> Plenty of implementations of dialects of Lisp have compilers that produce machine code. I would even say that for Common Lisp implementations it is more common to have a compiler than to not have one. There are several great Scheme compilers too, and Racket has a JIT.

Here's a sample session with SBCL, where I define a function, which is immediately compiled, and then I request a disassembly:

        CL-USER> (defun foo (n m) (* (1+ m) n))
        FOO
        CL-USER> (disassemble #'foo)
        ; disassembly for FOO
        ; Size: 48 bytes. Origin: #x1007CED6F3
        ; 6F3:       498B4C2460       MOV RCX, [R12+96]               ; thread.binding-stack-pointer
                                                                      ; no-arg-parsing entry point
        ; 6F8:       48894DF8         MOV [RBP-8], RCX
        ; 6FC:       488B55E8         MOV RDX, [RBP-24]
        ; 700:       BF02000000       MOV EDI, 2
        ; 705:       41BBC0010020     MOV R11D, 536871360             ; GENERIC-+
        ; 70B:       41FFD3           CALL R11
        ; 70E:       488B7DF0         MOV RDI, [RBP-16]
        ; 712:       41BBA0020020     MOV R11D, 536871584             ; GENERIC-*
        ; 718:       41FFD3           CALL R11
        ; 71B:       488BE5           MOV RSP, RBP
        ; 71E:       F8               CLC
        ; 71F:       5D               POP RBP
        ; 720:       C3               RET
        ; 721:       CC10             BREAK 16                        ; Invalid argument count trap

<comment> white-flame And if you declare types in SBCL as fixnum (register-sized ints):

      CL-USER> (disassemble #'foo)
      ; disassembly for FOO
      ; Size: 19 bytes. Origin: #x100784BCCB
      ; CB:       48FFC0           INC RAX                          ; no-arg-parsing entry point
      ; CE:       480FAFC1         IMUL RAX, RCX
      ; D2:       48D1E0           SHL RAX, 1
      ; D5:       488BD0           MOV RDX, RAX
      ; D8:       488BE5           MOV RSP, RBP
      ; DB:       F8               CLC
      ; DC:       5D               POP RBP
      ; DD:       C3               RET

As far as overhead goes, the SHL makes room for tag bits (and notice that's only done once, not per math op), and CLC indicates that the function doesn't return multiple values. That is not significant overhead, and will absolutely destroy reference Python in speed.

<comment><USER20> Maybe it's worth pointing out that to get that code like that from SBCL it's not enough to declare that m and n are fixnums, you also need to promise the compiler that the multiplication won't overflow:

        (defun foo (n m)
          (declare (type fixnum m n) (optimize (safety 0)))
          (the fixnum (* (1+ m) n)))

<comment> white-flame The reason I didn't list it is because there's so many different ways to do it.

The optimization declaration can be made globally, or per-file; declaring the type of the foo function (including parameters & return values) externally will fully cover this function without having anything additional in the body; there's helper macros to explicitly manage static types, etc.

So the type declarations don't need to be intrusive into the expressions themselves, and can be as transparent as you want. Of course, type inference also means that you don't have to specify every single type, while still getting the speed & checking benefit of fully typed code.

<comment><USER20> Could you show a way to get that code to be generated without any declarations in the body of the function? I tried something like:

        (declaim (ftype (function (fixnum fixnum) fixnum) foo) (optimize (safety 0)))
        (defun foo (m n) (* (1+ m) n))

That didn't optimize as fully.

<comment> white-flame You forgot (optimize (speed 3))

<comment><USER20> I did try with speed 3. Do you mean that:

        (declaim (ftype (function (fixnum fixnum) fixnum) foo)
                 (optimize (safety 0) (speed 3))
        (defun foo (m n) (* (1+ m) n))

should have produced the optimized code (without any generic-*)? It didn't in my testing on SBCL 1.3.18.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER21> I was much more excited about this before I read the article.

</comment><comment><USER22> [https://www.jetbrains.com/mps/](https://www.jetbrains.com/mps/) ?

</comment><comment><USER23> Literally sets an approach that's hit its limits in stone. [And yet people complain about punctuation.]

Looking forward there will be books on programming with FBE. fbeop will be all the rage. Naturally we'll discuss the form of code. Is that bulge too far out? What is better: a plain of declarations that meets a mountain range of control loops and flow, or, is it better to "sprinkle the frame" with mini frames of plains and hills? There will be debates. Conferences will be held. Papers will be presented with analysis of old school code rendered in FBE. There will also be attempts to finally bring generics to Go, with FBE frontends with little angular < slots >. Efforts begin to teach monkeys to code.

[p.s. and where exactly is that crab in Fig. 1? Very confusing ..]</comment>


Ask YC: what's the best way to model a threaded comment system like YC? - <AUTHOR> I'was thinking that maybe the best way would be use some king of nested set, but all the structures that i know are faster for reading purposes. And the tree here changes very often here, because voting changes it's structure.
Any idea?
This theory does not apply very well to a system like this (http://dev.mysql.com/tech-resources/articles/hierarchical-data.html) <comment><USER2> It's best to keep things in-memory if you can.

Since you mention MySQL I assume that's what you're using to persist data. Storing a tree in a flat database is kind of a challenge. This page (<http://www.sitepoint.com/article/hierarchical-data-database>) suggests two ways: adjacency lists, and modified preorder tree traversal. MPOTT is a cute idea, but that's about it. It will make your database schema more complex, make your algorithms more complex, and require preexisting entries to be changed when new ones arrive. It's not faster than doing things in memory, and it's just asking for trouble.

Try using adjacency lists and reconstructing the tree in memory each time you serve it. This will let you get away with a single query for both reading and writing. The dev.mysql.com link you mention warns against using the adjacency list model, but that's because it's an area where MySQL itself is inadequate. It's fine when you fix things in another language.

Here's a minimal schema:

topic, id, parent, payload

ID is unique and non-zero. Parent is the ID of the parent node (0 if top- level). Topic is shared by all comments in a given topic. When you select, select by topic and then recreate your tree by going through and reestablishing "children" lists for each of your parents. You can then use traditional tree algorithms.

This method is easily modified to support caching.

<comment><USER3> I've done threaded comments with adjacency lists like this in MySQL in the past, and it worked well. Note also that it's compatible with scores moving siblings around relative to one another -- just calculate sibling position based on both score and date. Your schema might look something like this:

id, date, topic_id, parent_id, score, payload

</comment></comment><comment><USER4> <http://ycombinator.com/arc/arc2.tar>

</comment><comment><USER5> You might consider how much of the structure and ordering you actually need to maintain in the database, and how much you could compute in your app servers after pulling the raw data from the database.

For example, say that your comments table stored the user id, the post id, the parent comment id (where the parent is the one the user clicked "reply" on), the vote count, and a timestamp. Then to render a page for all of the comments for a particular post, you could just pull all of the comments keyed by that post id and then order/arrange them however you want in your application code, such as by timestamp or number of votes. This doesn't require any tricky db writes and generally removes load from the db (which is desirable since its the hardest part of the app to scale).

The harder part is dealing with a case like the user comments page on neww.yc, where you show all of the user's comments along with of the descendants of those comments. Aside from the traditional approaches to storing hierarchies in relational dbs like the ones you linked to, I know of two other possibilities. One is to store the path of nodes to the root as lexicographically-comparable strings. The other is to create a separate table that stores ancestry relationships, in which for each node you have one row for each of its ancestors in the tree up to the root. Again, both of these approaches would allow you to pull out exactly the comments that you needed, but you would have to do the arranging in the application code.

<comment><USER6> I worked at a company where we used a decimal number to represent a tree for a threaded forum. It meant that we could use an ORDER BY clause and quickly get all the descendants sorted, like this:

7.401 7.40101 7.40102 7.4010201 7.40103 7.4010301

The downside was that it wasn't nearly this straightforward -- numbers seemed to be assigned haphazardly. And the scheme wasn't documented well, so it was nearly impossible for new programmers to understand.

I would not recommend this approach again. If you need high-performance searches for descendants, a separate table relating ancestors to descendants will be much more straightforward in the long-run.

</comment></comment><comment><USER7> Thoughts: 1) it's not relational data; is a database necessarily the right place for you to store it?

2) If you do decide to use the database, you can increase the write speed of the nested sets model by leaving large gaps between the left and right values.

That is, if the single child of the root node has left and right values of 0 and 1000, and you insert another child, you give it left and right of 1000 and 2000, and update the parent.

Then you'll only have to renumber if you get a wicked long thread.

<comment><USER8> I'm not sure I agree that we're not talking about relational data. I mean... each record is -related- to others in a parent-child sort of way. Maybe I'm misunderstanding what you mean by relational?

<comment><USER7> Ooh, bad memories, my boss made the same argument at me last week.

Anyway! The relational model uses tables to model all data. Though you can squeeze a comment tree into a relational data mode any number of ways, it is most clearly expressed by a hierarchical model as in XML, S-exprs or a tree data type in your favorite language.

So I'm not saying it can't be expressed as relational data, what I mean is that that representation is not its most natural or useful form.

At work I use a query like:

        select s1.id, s2.id, s3.id, s4.id ...
        FROM subject s1
        LEFT JOIN subject s2 WHERE s2.id=s1.parent
        LEFT JOIN subject s3 WHERE s3.id=s2.parent
        LEFT JOIN subject s4 WHERE s4.id=s3.parent
        ....
        WHERE s1.id=?

to get all parents of a given node. It's ugly, inefficient, and fragile. You can use the nested set model to simplify this particular query, but inserting rows becomes extremely complex and painful; you really just trade one problem for another.

So, while you can model a tree as relational data, it's not a good match.

<comment><USER9> I think what the parent meant is that such a tree _is_ fundamentally relational (not merely that it can be modeled as such). Since a relation is just a mapping between tuples and a set of logical values (TRUE and FALSE in most cases) then clearly there is a well-defined relation among the notion of 'parent' and 'child'. Thus the problem is the de-facto standard query language. It seems to me that we could use new special query language (or an extension to SQL) that could handle creating trees from pure relations in a performant and lexically elegant way. Or maybe it's already been tried and I missed it. (edit: looks like a lot of smart people have already figured it out)

</comment></comment></comment></comment><comment><USER10> _"... what's the best way to model a threaded comment system like YC? ..."_

A classic read is jwz's article on threaded messages ~ <http://www.jwz.org/doc/threading.html> jwz was a key hacker on mozilla ~ <http://en.wikipedia.org/wiki/Jamie_Zawinski>

</comment><comment><USER11> <http://news.ycombinator.com/item?id=33888>

<comment><USER11> Also here is MY ineffecient way of doing it:

function article($link){

print_story($link->id);

print_comment(0,$link->id);

}

function print_comment($parent_id, $link_id){

$comments = $db->get_col("SELECT comment_id FROM table_comments WHERE comment_link_id=$link_id and comment_parent = $parent_id ORDER BY comment_votes DESC");

if ($comments) {

    		$comment = new Comment;
    		foreach($comments as $comment) {
    				$comment->print();
    			}
    				print_comment($comment_id,$link_id);
    		}

    	}

}

TABLE `table_comments` (

      `comment_id`, `comment_parent`, `comment_link_id`, `comment_votes`

)

If you store and manipulate all the data in memory, I don't see why this would be that bad?

<comment><USER12> You can fetch all of the comments by comment_link_id in a single query, then work with the result to recursively print the tree.

</comment></comment></comment><comment><USER13> Here's a way I've previously "validated" some of my designs in this area.

Look at Slashcode (<http://www.slashcode.com/>), the code that powers Slashdot. They have quite a few threading features and they obviously figured out performance issues.

</comment><comment> a-priori The naïve approach is to give comments a parent (the reverse relationship gives you its children), and a boolean specifying whether it's a "front page" post. When selecting, order by votes. When rendering, do a depth-first search.

Is there any reason why that won't work?

<comment><AUTHOR> It's a little more complicated.

When you store the tree on the DBMS, you have some algorithtms to do it well. For Example, the Nested Set (check the link up).

In that algorithm, the nodes are stored in a hierarchy that does not have any information about the votes.

So, you have a perfect tree, but with the first vote, you must update all the structure to reflect the new order of the child.

Nested set is great for speed reading, but not for writing often.

Sorry if I'm not very clear.

I was testing rails plugins : acts_as_nested_set and acts_as_better_nested and all have the same problem.

<comment><USER14> I used a slightly different approach of combining acts_as_tree (for faster updates/inserts) and added a dotted_id for faster reads. The dotted id is a string,as in 0001.0002.0007. Index this column and its fairly fast. The obvious limitation this approach creates is the depth of your comment tree. approx =dotted id col size/#of digits in max pk -1. Not an issue for many. When Im updating the hierarchy , I update root of the hierarchy being moved and then a single UPDATE to update the dotted ids in that subtree. If you are using MySQL, then the max length of a column that can be indexed is also limited. Don't remember the exact length.

</comment></comment></comment><comment><USER15> Make a very simple database model with at least these columns: comment_id int, created timestamp, parent int, score int,...

When you need to view a page of comments that has not been loaded, load it into cache and then use your cache from there on out. When updates come in, write them directly to the cache, re-sort the cache as necessary, and then have the database updates run in the background.

For the cache tree model I use something like:

{'root_comment_id':123,'children_sorted_by_points':[]}

Cache expiration left as an exercise for you.

This can very easily handle something the size of hacker news.

edit: And this easily handles "many reads and many writes and an ever-changing order".

</comment><comment><USER16> More thoughts please on a system with both many reads and many writes and an ever-changing order (i.e., sorted by dynamic rankings instead of "time posted," a constant)!

<comment><AUTHOR> When you add the "dynamic ranking" to the rdbms model, it's turns very complicated.

Would be a good idea to model the three on XML and store complete trees on the dbms? (thinking loud!) :)

</comment></comment><comment><USER17> Adjacency list in the database, build the tree in memory, cache the result in memcached if you need to.

</comment><comment><USER18> Have a message table and an ancestor table. The ancestor table allows you to find all ancestors of a message or all decendents of a message. This allows you to quickly retrieve a branch of the discussion tree.

</comment><comment><USER19> MPTT is generally the fastest way to get relational to tree data. If you are udsing Django code.google.com/p/django-mptt/

</comment><comment><AUTHOR> One more idea :

Is here the solution? <http://arclanguage.org/item?id=3426></comment>


New clickjacking attacks expose your Gmail messages & Facebook/Twitter identity - <AUTHOR> https://docs.google.com/document/pub?id=1hVcxPeCidZrM5acFH9ZoTYzg1D0VjkG3BDW_oUdn5qc&pli=1

<comment><USER3> The Google OAuth attack is pretty sneaky indeed. I noticed the popup being created, positioned, and hidden upon the first click but I highly doubt most regular users would. I wish there was an option in Chrome to force new tabs to be opened instead of new windows and to completely disable popups for all sites, always. I can't think of any reason why a site needs popup anymore, especially since IFrames, OAuth, LightBox, JSONP etc. can handle pretty much all the rich-media use cases.

<comment><USER4> Just use Firefox with browser.link.open_newwindow.restriction = 0?

<comment><USER5> Yeah, here FF just opened a new tab ("Clickjacking is asking to...").

Well, no, actually it just showed the instructions - NoScript is awesome - <USER2> _after_ I enabled scripts, it opened the tab.

</comment></comment></comment><comment><USER6> This reminds me of one of my favorite features of Stainless (<http://www.stainlessapp.com/>): You could have one tab with a session in which you are only logged into Google, and use that tab only on Google websites, with a bookmark to access that session in a new tab. Then you would not be logged into Google in any other tabs.

I would really like to see development of Stainless continued, or for some of its security features to be adopted by Google Chrome. If anyone knows of such functionality, I'd like to hear about it.

Also check out the Ghostery extension (<http://d.pr/DzJt>); it blocks some of these sorts of elements (it doesn't, for example, block the Twitter follow button, and I don't know whether it blocks Google's OAuth)

<comment><USER7> +1 for another stainlessapp fan in the wild! I really wish they'd continued development on it.

</comment></comment><comment><USER8>
      Demo link: http://webperflab.com/david/like.html

I went there and clicked the like button, the information it drew up for me were of a completely different profile.

      {"id":"224***","name":"Dennis******","first_name":"Dennis","last_name":"******","link":"http://www.facebook.com/dennis******","username":"dennis*****","gender":"male","locale":"en_US"}

_(Stars added by me to protect privacy of that person)._

<comment><USER9> This has to do with the way that the way the algorithm works. When you click like, you like a page. Then, a server-side script on webperflab's server contacts Facebook's opengraph, gets a list of users, looks up information on the last user that liked the page, makes that user "unlike" the page (the page can do that, it's like kicking a user out of a group), and then returns information about that user. If, for example, another user likes the page before the script can return information about you, it will return information about the other user. The demo could probably fix this issue by having multiple groups.

</comment></comment><comment><USER10> Ideally the deanonymization attacks would not mean much if it was just that, but that is another mess altogether. Of course, the Google OAuth attack is much more serious.

</comment><comment><USER11> This is why I never remain logged in google. I don't use facebook. I imagine things like this might increase with people remaining logged into g+?

<comment><USER5> Personally, I just have a personal Google account without any personal data (well, except for Reader subscriptions, but that's not really important) for normal browsing in Firefox, and a Google Apps account that I use in Chrome just for contacts/calendar/email.

Now with Google+, keeping that separation would be more difficult if I wanted to use it, though, since I'd lose the integration between normal browsing and G+.

</comment></comment><comment><USER12> The OAuth attack can be solved the way Firefox solved the double-click attack for installing plugins and add-ons: temporarily disabling the positive button for 2-3 seconds, though in this case it should be disabled indefinitely until there is mouse focus over the button and only then the delay to enable the button should initiate.

</comment><comment><USER13> I'm using the WidgetBlock Extension for Google Chrome ( [https://chrome.google.com/webstore/detail/hgiihiookhijpbhafl...](https://chrome.google.com/webstore/detail/hgiihiookhijpbhaflohognbhmamdnol) ) and it seems to block the like button on the first demo. The oAuth Demo still works though.

</comment><comment><USER14> I get a Google login window when I click this link.</comment>


Sqeezing performance out of CUDA - g-garron http://www.johnhawthorn.com/2012/03/squeezing-performance-from-cuda/

<comment><AUTHOR> Here are a couple of observations

1) The implementation may not be the most effecient for a larger matrix or an even more dense matrix. 1% of 52000 is 520. That divided by 32 is 8-9 additions per thread. As that number increases, increasing the number of threads (and eventually using more blocks per row) would be a good idea.

2) He is allocating twice as much shared memory than required. I genuinely hope that was an artefact from before. If not, that is a killer for performance. Using more shared memory per block reduces the number of concurrent blocks.

Note: Not sure why he is still using cuda 3.2. cuda has had csr multiplication for a few months now, and has even gone through a revision to make it even faster.

<comment><USER2> Oh, no! Missed noticing my first link from HN for a few days. Hopefully I can clarify some of this.

First, this is in no way faster than cuSPARSE or cusp. I wrote this for an originally for a school assignment (hence older cuda version) and was hoping to convey what I had learned my first time using cuda.

The size of the shared memory is so the reduction has no buffer overflow without using conditionals. However I am using more than needed, it should be set to 32+16. I don't expect this to affect performance as the kernel already reaches 100% theoretical occupancy.

Could you explain the desire for more threads/blocks per row? I can't immediately think of one, having more additions per thread sounds good so long as all are running.

Thanks very much for the read and the reply!</comment></comment>


Your API is not RESTful - <AUTHOR> http://vvv.tobiassjosten.net/development/your-api-is-not-restful

<comment><USER2> erm, "Instead you probably want to POST data to the /users collection."

wouldn't it be PUT?

<comment><USER3> I believe post is for creating with posted value(s). Put would be just a modification without posted value. E.g. "PUT /users/123/disabled" would disable a user.

Edit: after reading, POST is for creating with an unknown identifier (think INSERT w/ auto-generated PK) whereas PUT is for creating or updating (if already present) with a known identifier (think UPSERT w/ a manually entered PK).</comment></comment>


The Worst SaaS Cancellation Policy on the Internet - <AUTHOR> http://www.sitebuilderreport.com/blog/the-worst-cancellation-policy-on-the-internet <comment><USER2> File an FTC complaint about them, and a BBB one, and send a complaint to Dun & Bradstreet while you are at it, and post something on ripoffreport if they are still around. Then change your credit card # ( get a new number / card )

Sounds like these guys are exploiting the same flaw in CC payments that a number of phone services, domain name registrars, buyer protection services, etc exploit which is that there is no way to 'pre-decline' a charge to your credit card. They will keep charging your card (regardless of your cancellation) and when you complain they will send the CC company a copy of your _initial_ signup / agreement and won't include any follow up documentation. You will have to send your email as documentation as 'proof' month after month. Many people just give up and pay the the money. The local news station has a consumerist segment they run now and then, this sort of scam comes up frequently.

Clearly you are not alone: [http://www.ripoffreport.com/reports/directory/1and1-internet](http://www.ripoffreport.com/reports/directory/1and1-internet)

<comment><USER3> Actually, my business bank in the UK (Barclays) can apparently block card payments in advance. I know because it took an astonishing amount of work to stop HasOffers from billing me after my trial had ended and been cancelled.

</comment></comment><comment><USER4> This is a tangent, but I had a similar reaction to Honest company (baby products) and cancelling. My wife signed up to their trial subscription delivery thing for diaper for our newborn. This is Jessica Alba's company.

We sign up for the trial online. The diapers were fine, but we still liked the indicator strip on the Pampers better. So my wife goes to the website to cancel. Can't cancel online. Great.

So she has to call. But then she's on hold for 10 minutes, at which point being a brand new parent, she needs to nurse the newborn and can't be on hold any longer. So she emails to cancel, no response.

A second call, another 10 minute hold time, and almost giving up again, she finally gets through to someone to cancel and she has to go through a series of questions before cancelling.

Honest seems to be preying on new parents who simply don't have the willpower or time to deal with cancelling. Checking out reviews, it seems a lot of people have this 10 minute "hold time". I'm suspicious it's just an automated wait time, and their representatives aren't really that busy.

<comment><USER5> I used FancyHands to cancel my Honest subscription. Glad that was money well spent.

</comment></comment><comment><USER6> I've found with businesses like this (though not 1&1 specifically), the magic word is "chargeback". It helps you cut through the bullshit because if they get too high a percentage of chargebacks, their credit card processing fees go up (and they can even lose the ability to charge cards).

<comment><USER7> I know what you're saying but a chargeback is really for a charge that you believe is fraudulent/have no idea why it was made. That's certainly not the case here. So folks like 1&1 usually have proof that you willingly signed up for the charge. If that happens you can be blacklisted and other merchants suddenly won't accept your card. It then costs $99 to get off that list.

<comment><USER8> Believe it or not a chargeback doesn't have to be for things you consider fradulent. We see people all of the time chargeback for services provided. All you need to do is issue the chargeback. 99.99% of the time it will go through

<comment><USER7> I know it's abused like this as you say. The point is that for merchants for whom there's a lot of buyer remorse (dating sites etc) they enact clear steps to show you knew what you were doing and will then dispute those chargebacks (they have to or else they will get dropped)

<comment><USER9> Merchants very very rarely win chargebacks. They can represent all they want with proper documentation, and they may even win the first chargeback, but that win can easily be reversed by the credit card company, if the customer is persistent enough, with no explanation to the merchant. I know this because I've worked in credit card processing.

So any time you run into an issue with a merchant, if they look like they are acting in bad faith, you should just chargeback and stop wasting your time.

</comment></comment></comment></comment></comment><comment><USER10> 1&1 is terrible. I tried them once with a VPS. After three or four days, they still hadn't provisioned the VPS for me (you heard right, it's a manual process), so I promptly cancelled. A few months later they started hounding me (via email and phone calls) to pay up on the $15 that I supposedly owed for a free trial.

Absolutely terrible company.

</comment><comment><USER11> 1and1 has extremely aggressive telemarketers.

They once called my computer illiterate father who can barely speak english and instructed him to go to trial.1and1.com to sign up for MyWebsite.

Another time I refused the MyWebsite trial and the aggressive-pissed-off guy on the phone signed me up anyway. Twice. I finally got $350 refunded after months of complaining.

Always hang up the phone. Yell "no no no" and hang up immediately. Always. They use phrases like "I'm going to sign you up for that so you're all set." and "ok you're all set with the mywebsite service". They don't ask you if you want a trial. They opt you in. It's up to you to interrupt them.

I love their services however.

<comment><USER12> > I love their services however.

wat?

</comment></comment><comment><USER13> I absolutely loathe 1&1, i've taken more than a few clients off of their hosting and its been an absolute nightmare EVERY TIME. A client of mine got so annoyed with their service they stopped paying and asked me to move everything out of there. After umpteen phone calls and emails i managed to do it, but it took weeks. I ended up having to pay to reinstate the service just so i could get access to it in order to move it, and since the client had lapsed on their payment, it had eventually went to a debt collection agency, because of that, 1&1 had refused my money, said i had to instead pay the agency, they would then tell 1&1 and then reinstate the service.

Was an absolute nightmare...

Personally, i think these are the kind of companies that should be bought by the big boys, because there's SO MUCH opportunity to win here. They have a massive user base that is VERY poorly looked after, buy the company, fix shit like this, and you can make a huge impact. Another option would be to try and topple the incumbent, doesnt take as much money but its a lot harder.

</comment><comment><USER14> Gosh. I can't stand 1&1\. When I was in undergrad I bought my first domain from 1&1 because I really had no idea where to buy them.

I've received phone calls from them for 4 years. The always end with "Yes sir, we will remove your number from our list"....so either I'm on a lot of lists or they are lying to me.

</comment><comment><USER15> I was scammed into adding on the website builder to my package. I was sitting at work and I received a call. I took it and a sales guy started trying to sell me on this. I explicitly asked him whether I would see any recurring charges if I said yes to this trial and then took no further action, and he assured me that was the case. I really just wanted him to shut up so I could go back to work. Imagine my surprise 4-6 months later. I was looking at my invoices and I notice this line for the builder! They did reverse the charges (I had just received the second bill and they bill quarterly), but it had to be done over the phone and during east coast business hours. Well, I work those hours.

<comment><USER16> You were "scammed?" What? That story literally makes no sense.

How did the salesman get hold of your personal information and payment information to sign you up to this service?

Also how did you think a trial would incur no recurring charges after the trial expired? Particularly if you left it for 4-6 months? How long did you think the trial was?

Sorry but that post could not be more nonsensical if it tried. And the line "I really just wanted him to shut up so I could go back to work." just further adds to the confusion. So you signed up to a trial to get a salesmen to leave you alone then left it for 4-6 months, and then got upset when you got charged?

<comment><USER17> Sounds like he expected it to end.

</comment></comment></comment><comment><USER18> It should be illegal to not offer online cancellation for an online service.

</comment><comment><USER7> There needs to be a general logo/sticker/proof seal. "You can cancel a subscription the same way you can buy a subscription" If you can sign up for something online and buy it within 3 - 5 steps you should be able to cancel it online with 3 - 5 steps. If you need to call or visit a human to sign up for a service then it's fair that you may be required to call or visit a human to cancel it. How many people would more confidently purchase/avoid purchasing if that was on the checkout/payment page?

</comment><comment><USER19> My favorite part is when you go to their 1&1 reviews page ([http://www.sitebuilderreport.com/reviews/1&1/user- reviews](http://www.sitebuilderreport.com/reviews/1&1/user-reviews)) it invites you to "Try 1&1" with a referral code.

</comment><comment><USER20> Wow, I'd heard of 1&1 but never imagined what kind of users take them up on their free trial offers. It sounds like their business model is smoke and mirrors. They maybe got a page out of the Comcast playbook.

Sorry to anyone who has ever signed up with 1&1.

</comment><comment><USER21> I remember well over 10 years ago when I first used 1and1 when they started aggressively advertising.

Piss poor service, a few years and a couple hundred bucks in erroneous charges later and I finally managed to cancel them but not before getting sent to collections and having the only stain on my credit (which has long since gone away). The collections agency they use is as bad as they are.

They are truly among the absolute worst service providers on the internet, along with the similarly-famous Network Solutions.

Avoid at all costs.

</comment><comment><USER22> On all the products I've sold in SaaS form, we've made it a point to let people cancel easily. Sometimes I question if we made it too easy, but then I think to Wheaton's Rule, and also the fact I'm saving time not staffing a team of assholes to block cancelations.

I can imagine tons of possibilities to work to reduce churn, but this 1&1 stuff is nuts. I'm sure tons of people don't cancel because $9/month isn't worth their time right now to call.

</comment><comment><USER23> This is very timely, I was thinking about signing up with 1 and 1. Can anyone recommend an alternative with similar services and price?

<comment><USER24> What exactly do you need?

<comment><USER23> Cheap linux hosting for my php and wordpress projects.

<comment><USER25> If you want a general VPS:

Digital Ocean, Linode, Rackspace, Amazon EC2, Google Compute Engine

Digital Ocean lets you provision the lowest spec servers of all those, for $5/mo.

edit: if you just want Wordpress, check out [https://aws.amazon.com/marketplace/](https://aws.amazon.com/marketplace/) although I've never tried that service. They give you a VPS with various apps pre-installed, e.g., [https://aws.amazon.com/marketplace/search/results/?page=1&se...](https://aws.amazon.com/marketplace/search/results/?page=1&searchTerms=wordpress)

<comment><USER23> Great, thanks!

</comment></comment></comment></comment></comment><comment><USER26> They are truly terrible, for multiple reasons. I encountered a similar issue when canceling with them earlier, where they actually asked for my password over the phone:

[https://www.andrewmunsell.com/blog/one-and-one-asks-for- your...](https://www.andrewmunsell.com/blog/one-and-one-asks-for-your- password)

</comment><comment><USER27> Ugh, these guys really are the worst. I had a credit card expire, and instead of letting me just update the card details, they sent it to a collection agency and when I called their customer support to just give them updated details they refused to help out. So you know what? I'm never going to pay them. Assholes.

</comment><comment><USER28> 1and1.com actually allows cancelation online. I found this out years ago, when the pain became unbearable from using their services for over 8 years.

[https://cancel.1and1.com](https://cancel.1and1.com)

Oh, and I attained this URL after calling customer support.

<comment><USER29> Author here: actually the article talks about this- you're unable to cancel the My Website (their most popular service) using that website.

</comment></comment><comment><USER30> This is pretty much the same story with eFax: never ever ever EVER signup for that thing.

</comment><comment><USER31> Based on what I'm reading they should really rename their company 1^1...</comment>


Ask HN: Best accredited online education? - <AUTHOR>

What is the best online education that ends in a certificate or degree? This obviously excludes Udemy and similar sources - I'm referring only to accredited institutions that give online learners something that can go on their resume that employers outside of Silicon Valley would respect (or at least acknowledge).<p>Some institutions that come to mind are the University of London[0], University of Waterloo[1] and University of Illinois[2], although I'm sure there are others.<p>[0] http://www.londoninternational.ac.uk/ [1] http://de.uwaterloo.ca/programs.htm [2] http://www.online.uillinois.edu/default.asp <comment><USER2> In the U.S. there is a school [http://www.wgu.edu/](http://www.wgu.edu/) that is accredited and is DOD and government approved for financial aid and reimbursement. I recently interviewed a couple of grads out of their B.S. in Software Development degree program and they were on-par with most public university students in the US. A little weaker in a few areas, but prepared to do real day to day work. Both candidates I interviewed came out with Microsoft certifications too, can't remember what they were but both said it was part of the program. I looked up the school because I hadn't heard of a B.S. degree in Software Development.

<comment><USER3> WGU, as I understand their model, provides certification of competency and information on recommended educational resources to help develop the competencies they certify, but doesn't actually provide education in the traditional sense.

<comment><AUTHOR> Yes, I've read a little about them in my earlier research on this topic and it seems they are mostly (if not entirely) self-guided in terms of the actual education.

<comment><USER4> I'm a current graduate student at WGU. From my experience, most courses are well laid out with syllabus, required reading, exercises/papers/tests to judge competency of the subject matter, some classes have video lectures others are based solely on the readings and exercises.

It is self guided in that you can go at your own pace and like a traditional brick and mortar institute, you can put in as much work as you deem necessary to pass a class.

My view is that I'm getting my degree for a reason, so I'd rather walk away with something more concrete than the diploma. I actually really enjoy the structure (or lack thereof) as I struggled quite a bit during my undergrad at a traditional school with the slow pace of most classes.

</comment></comment></comment></comment><comment><USER5> The Open University [http://www.open.ac.uk/](http://www.open.ac.uk/) Athabasca University [http://www.athabascau.ca/](http://www.athabascau.ca/)

</comment><comment><USER6> The university of Liverpool has a number of decent online programmes in cooperation with laureate international. I'm currently on the MSc Web sciences & Big Data programme.

[http://www.university-liverpool-online.com/](http://www.university-liverpool- online.com/)

<comment><AUTHOR> This looks very interesting. Are you a UK resident?

</comment></comment><comment><USER7> Georgia Tech, a top 5-10 Computer science school offers an online masters degree in computer science. Unfortunately there isn't an equivalent for an undergraduate program yet.</comment>


Creating Custom Capacity Buffers in Go - <AUTHOR> https://www.elitmus.com/blog/technology/custom-capacity-buffers-in-go/

<comment><AUTHOR> I implemented this by creating a wrapper over buffer struct, are there other ways to control size of buffers or files?</comment>


The Intricate and Peculiar Torture of Taking One's Tech Company Bankrupt - <AUTHOR> http://www.goertzel.org/benzine/WakingUpFromTheEconomyOfDreams.htm

<comment><USER2> It's a great read, though I'm not sure how to take his words in the engineering domain (e.g. what does "3/4 complete" exactly mean?). I don't doubt he is a vary smart guy and also had amazing people; but many years of software _engineering_ have made me quite conservative in terms of estimate.

If all the planned components are written, and you can feed the real data into the system and get the reasonable final result out of it, then I'd call it, say, 50% complete; there'd be tedious works after that to make things robust, or find users have unusual settings and you have to adapt to it, etc. Borrowing his rocket metaphor, the rocket without the nosecone is less than half way in terms of development...

Of course it really depends on the nature of the product; maybe things like AI engines you can convince the client to pay in the state of "it basically works" and then gradually adapt it to the client's needs afterwards. Also his writing is sometimes sarcastic (which makes the writing enjoyable), so I'm not sure he uses "3/4" or "almost finsihed" in ironic way (that he knows it wasn't "almost finished", but he thought so back then).

Anyway, it's so easy to criticize retrospectively. I still respect them for having tackled to such a big problem.

</comment><comment><USER3> I have a friend with an AI investing system <http://www.neuralinvesting.com/>. He is a smart guy, too smart. I have found the smarter the person the harder it is to make money because they want to solve problems all of the time. If you are solving problems when do you stop and say "this is enough!" and just start pushing what you have made?

</comment><comment><USER4> Problems that seem easy in theory are so much harder in practise. Like the other day I thought I'd write a quick piece of software in java to automatically navigate from one spot to another and avoid obstructions. Sounded like a 15 minute job, lasted 3 days. It's the same problem all AI creators have, but with them, it sounds like 15 minutes, lasts 3 years and still doesn't work.

<comment><USER5> AI is especially funny that way. You always feel like you're _almost there_. Since 1965 I think.

In reality, AI is like jumping across the Grand Canyon. You either jump all of the way, or Wile E. Coyote it.

</comment></comment><comment><USER6> long, but worth the read.

if the author is to be believed, they were pretty close to having something that would have been a breakthrough for AI. i wonder what happened to the source code, and why it wasn't pursued further.

</comment><comment><USER7> amazing this has no comments. Everyone thinking about starting a company should read it.

Better to have tried and failed, than never to have tried at all.</comment>


Slashdot acquired by SourceForge - <AUTHOR> I received this email from email@example.com:
"2016-03-14
Dear Site User,
Fair processing notice - Data Protection Act 1998
We are writing to let you know that with effect from 27 January 2016, the Slashdot Media business, which provides online services through various web sites including Slashdot.org and SourceForge.net (the "Slashdot Media Services") has been purchased by SourceForge Media LLC of 1660 Logan Avenue, San Diego, California, 92113, USA ("we" or "us").
As a result your personal data have been transferred to us and will be used in connection with the continued provision of the Slashdot Media Services to you. Your personal data will continue to be processed fairly and lawfully in accordance with the Data Protection Act 1998 for the same purposes as those it was originally collected by Dice Career Solutions Inc and/or eFinancialCareers Limited including to:
[...]
You can ask us to remove all your account data, stop processing your personal data and to stop contacting you for marketing purposes at any time. * For SourceForge.net, please contact us at firstname.lastname@example.com * For Slashdot, please contact us at email@example.com * For FreeCode, please contact us at firstname.lastname@example.com * For SlashdotMedia.com, please contact us at firstname.lastname@example.com
Please let us know if you have any queries. Yours sincerely, Logan Abbott The team at SourceForge Media LLC" <comment><USER2> It looks like this was part of the sourceforge purchase made back in January and previously discussed here:

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

</comment><comment><USER3> Yes this is from the January sale. SourceForge and Slashdot have been owned jointly for years, our subsidiary is just named SourceForge Media. Notice is just legally required.

</comment><comment><USER4> Didn't Slashdot used to own SourceForge?</comment>


068: Screaming in the Cloud, GDPR, Kubernetes PoCs, InfoSec, and More - <AUTHOR> https://devopsish.com/068/ <comment><USER2> Yay, my ridiculous podcast made DevOps'ish!</comment>


Wolfram Alpha Changes Its Name - <AUTHOR> http://blog.wolframalpha.com/2011/04/01/wolframalpha-changes-its-name/

<comment><USER2> _groan_

</comment><comment><USER3> Surely Wolfram|BETA would have been more effective. Bieber ruined it for me.

</comment><comment><USER4> Really?</comment>


Why I probably won't be making another mobile game ever again - <AUTHOR> http://www.mikecann.co.uk/misc/why-i-probably-wont-be-making-another-mobile-game-ever-again/ <comment><USER2> Publish on the Amazon Store for your paid apps and on F-Droid for your free ones. Or publish mini games for Free on Fdroid with links to your own hosted paid games. Don't give up.</comment>


Ask HN: What is the best way of using Linux on a laptop (currently)? - <AUTHOR> I'm planning to get a new laptop soon, and there's a problem: I really do like good hardware such as the Surface Pro, and also think that having a tablet-laptop combo is a good thing (also saves you from buying yet another device on top). However, I've so far been using Ubuntu on my Thinkpad X1 (oldest version probably, from 2012). While the Linux workflow was flawless, I wasn't happy at all with Ubuntu's hardware support for that particular model. Battery life is horrible, the fan spins up quite often, and so on. Basically I wasn't able to work on the go because the battery was dying after 2 hours. I don't want to make the same mistake again.
I'd be interested to know how you Linux-philes out there are using Linux on a laptop?
- Natively
- Through a VM
- Windows 10 Bash Shell
Would be really great to hear about your experiences with the various alternatives.
Thanks! <comment><USER2> Leaving Ubuntu out of the subject for personal reasons I would like to recommend you use Debian stable as you must already be accustomed to dpkg and apt utilities.

The way to use Linux that works best for everyone is to start with a very clean installation, and really only install what you need.

This does not only work best because you don't end up with unwanted processes eating up resources but you also get to understand a bit more about each part as you install them, if you're curious enough to seek information on dependencies and explore around the configuration files of every software component you add to your installation.

To do this with Debian is really easy, just deselect every single item in tasksel during the installation process, and later use apt/aptitude to install what's missing.

I prefer not to install meta-packages that are meant to bundle "everything you need" for X (example: task-gnome-desktop) but you get to decide if you like having system components you do not fully understand...

For the sake of an example here is a list of all the packages that would be installed on my laptop if I would install task-gnome-desktop (897 packages / 2,175 MB disk space): [http://paste.lisp.org/display/325002](http://paste.lisp.org/display/325002)

Of course if you have time, or just interest, but mostly if you never went through it before I would recommend Slackware.

Have a fun ride!

</comment><comment><USER3> So if you prefer the Ubuntu ecosystem, but are willing to go for a more traditional desktop environment, I would recommend KDE neon with the muon package manager. It's a distribution based off Ubuntu Long term support releases but tracks the KDE Plasma desktop packages more closely.

To improve driver support, you might consider updating to the latest 4.7.2 kernel from the Ubuntu mainline ppa. Tracking Mesa more closely by adding the padoka ppa. And by adding proprietary drivers by running ubuntu-drivers --auto-install. Manually setting the DPI for sddm might also help if you have a high DPI screen.

To improve power consumption, consider adding powertop, and setting powertop --auto-tune to your rc.local

Currently running KDE neon on my Dell XPS dev edition, and everything works. Wifi, graphics, sound, touchpad, special fn keys. Arguably, the wifi and touchpad are even better than under win 10 AU.

</comment><comment><AUTHOR> Thanks a lot guys. These are very valuable pointers. On a more general note, would you always prefer running Linux natively on your laptop to using it in a VM or through the new Windows 10 Bash Shell? Does it give it you any added benefit?</comment>


Gridlocked Out - <AUTHOR> http://www.nationaljournal.com/features/restoration-calls/young-innovative-and-gridlocked-out-20120315 <comment><USER2> Congress has no incentives to work better since voters don't hold them accountable for bad governing. That's because voters aren't held directly accountable for casting votes for politicians who govern badly.

The whole system seems more likely to collapse than it is to fix itself.

The less power these children have, the better. That's why my first principle is "more individual liberty, less government". Liberty has its problems too, but having these know-nothing masterminds control us is just not the answer.

I know that my "less government" rant doesn't resolve the immigration issue directly. But maybe if those DC clowns had less to worry about, they could deal with the few issues (like immigration) that the Constitution enumerates as their powers. Certainly if they did less we could monitor their progress more closely.

<comment><USER3> _"That's because voters aren't held directly accountable for casting votes for politicians who govern badly."_

The above seems more like an argument against democarcy than an argument for "smaller government." More over if we found ourselves under your "smaller government" how will that solve the problem that voters are not held accountable for "votes for politicians who govern badly"?

<comment><USER2> It's an argument against allowing democracy to engulf too many aspects of our lives, especially when it comes to the "one size fits all" democracy of the Federal government.

Why should voters in Wisconsin get a say in what chemical substances I put into my body where I live? They shouldn't. It's unnecessary and just opens our government up to all sorts of abuses of the system.

So many things in our lives should be left to us, not decided upon by politicians in DC who were put there by voters in other states who are completely ignorant of our lives and circumstances.

<comment><USER4> The problem is: Where do you draw the line? How do you determine what should be left to us as individuals and what should be decided via the force of majority-rules democracy? Potentially everything could be left to the free market so there is no line to draw which wouldn't be to some extent, arbitrary. We could argue that the majority can decide what the limits of the government could be, but that would be government deciding its own limits. Not the best idea if you want a small government.

<comment><USER2> The US Constitution had some great lines drawn and it required much more than just majority rule whims to change it. Unfortunately, it's been butchered by politicians and the courts and that butchering has effectively become law through practice and precedent. The US Constitution had a good run, but it's fairly ineffective now.

If you're just asking a philosophical question about where to draw the line -- Libertarians have put a great deal of thought into this matter. The non- aggression principle (<http://en.wikipedia.org/wiki/Non-aggression_principle>) may not work in absolute terms, but it would be nice to move toward it to battle the continual feature creep of the federal government.

Societies, governments, and businesses have life cycles. America had a great start with the idea of Liberty being central to everything (except the ironic scourge of slavery). That notion of Liberty attracted people all over the world who helped turn the US into the super power that it was. Over time, though, the success and ends that Liberty created became more powerful than the core message of Liberty itself.

Now here we are. The Takers have infected our society to such a degree that all of our societal "safety nets" are headed for near-inevitable bankruptcy. Unless people wake up pretty soon and realize that we have to act responsibly, we're pretty much doomed to suffer a great amount of financial upheaval in the next 25 years. With the new season of Dancing With the Stars underway, though, I doubt anyone will have time to worry much about Liberty.

</comment></comment></comment></comment></comment><comment><USER5> I have to wonder; what makes a lot of these people qualified to do this sort of thing? I'm not saying it isn't a noble goal, but do they have any experience in behavioral pharmacology or classroom education? And yet they're dictating what should and shouldn't be scored? I cringed a little when I read they would be ranking various criteria, such as 'teamwork'.

And after all the articles on introverts on here, lately.

<comment><USER5> Psychology _

</comment></comment><comment><AUTHOR> For people not following the immigration bill that is being discussed in this article, it eliminates archaic per-country limits on issuance of green cards.

It has been incredibly frustrating to see such a common sense "fix" - which is supported by a majority in both parties and the industry - get stuck due to pure politics. I guess the lesson here is that it is the Senate rules that really need to be reformed.

<comment><USER3> It is quite a stretch to take a perceived solution to an alleged problem with one issue and generalize it to apply to all senate activities.

What would you change?

</comment></comment><comment><USER3> Wow, has anyone ever seen coralcdn give a 403 error?

[http://www.nationaljournal.com.nyud.net/features/restoration...](http://www.nationaljournal.com.nyud.net/features/restoration- calls/young-innovative-and-gridlocked-out-20120315)

The mobile site is timing out for me.

</comment><comment><USER6> "We want those brains in our country"

This seems like an awfully nationalist perspective. (Can we start using nationalist as a derogatory term like racist or sexist?)

If the United States really has the best universities, I have a hard time imagining a better use for them than spraying highly educated people all over the world.

Of course, startups are a somewhat different issue...

<comment><USER3> Why would we start making up new definitions for words. How about jingoism?</comment></comment>


Show HN: World Cup Predictor 2014 - <AUTHOR>

Hey everyone! The biggest tournament of the world is here and this is what I have been working on these couple of days. Please have a look, even if you are not a football fanatic. I would love to hear some feedback on the site in general.<p>http://world-cup-predictor.com/ <comment><USER2> _Play your way through the tournament

Make predictions for every match from the group stages to the final

Free. _

Black text on a dark background is not terribly legible.

Registration is a chore. Demanding a username _and_ my e-mail address _and_ a new password _twice_ is perhaps too much friction. Demanding I click a link in an e-mail that still hasn't arrived yet before I can do anything interesting on the site is a bit of a stumbling block.

<comment><AUTHOR> Thanks for the feedback. Going to fix these right away.

<comment><USER3> I'd put a call to action right below this text to potentially get more sign ups. To be honest though I would like to see what it is before signing up. I can't really tell what I can do on the site from the landing page.

</comment></comment></comment><comment><USER4> Since I'm not a "football fanatic" i really need more info regarding how the whole system works before i click register.

Also a nice big call to action would be nice to have.

</comment><comment><USER2> Clicky link: [http://world-cup-predictor.com](http://world-cup-predictor.com)</comment>


Show HN: Chrome extension detects clickbaits on Facebook using deep learning - <AUTHOR> https://github.com/rahulkapoor90/This-is-Clickbait <comment><USER2> Is the server part (clickbait-detector.herokuapp.com) open source as well?</comment>


The Last-Minute Decision That May Have Saved a Mission to Mars - <AUTHOR> https://medium.com/@steltzner/the-last-minute-decision-that-saved-a-mission-to-mars-af0dd657652d#.7xu4gk2gl <comment><USER2> By Adam Steltzner, who was the lead for the landing system for the large Curiosity rover now on Mars.</comment>


Show HN: Convert PDF files into structured data - <AUTHOR> https://docparser.com?utm_source=hn&utm_medium=email&utm_campaign=showhn <comment><USER3> Is this using something like [https://github.com/creatale/node- fv](https://github.com/creatale/node-fv) on the backend, which can accommodate various not perfectly scanned forms to data, after you prepare a schema? Or is it a more simplistic "mark hotspots" which won't work well/at all if if it is not perfectly aligned/sized with the original?

<comment><AUTHOR> We do position based text extraction. We add however an 'unpaper' function which tries to correct misalignments and increases the quality of the scan.

<comment><USER4> What OCR library do you use? What languages it supports?

<comment><AUTHOR> For scanned images we use [https://github.com/tesseract- ocr/tesseract](https://github.com/tesseract-ocr/tesseract). For text based PDFs we pull the text directly from the file and all languages are supported.

</comment></comment></comment></comment><comment><USER5> I'm working for a company that does DMS Things™ and processing incoming PDFs (for mailroom applications or invoice processing) is one of our core projects. Given that this is the closest submission to my day job ever, I'm really curious about your project.

Your online presentation looks great. The 'layout designer' if you will, the 'where are important things' screens look slick.

I do wonder how you assign those settings to incoming PDFs though. Is it the user's responsibility to say 'This PDF? I told you how/from where to extract data before'? Or do you have some classification system that stuffs the PDFs into buckets (say, by vendor) and templates are assigned to those?

How many PDFs that you encounter contain text (vs. scanned/image only documents)? For us, while the former certainly rise in popularity, the latter are still far too common/more prevalent.

Our solution is mostly on-premise so far (online offerings are the current focus of development) and we're quite OCR heavy, using a bunch of non-free engines and vote between the results. We also have dynamic templates, allowing rule sets containing rules like 'The total amount is a number satisfying format X, usually right or below a string containing "Total"' (and our invoice processing solution basically comes with rules like these preconfigured for various countries).

Are your templates using absolute coordinates/regions? You mention your 'unpaper' feature - do you fix/deskew both images and regions for misaligned pages?

(I won't mention any company/product names, because I don't want to advertise or hijack the thread. Nor do I need to connect my HN account ~directly~ with my employer)

<comment><USER6> what does DMS stand for? or is "DMS Things" a tm?

<comment><USER7> DMS = Document Management System ツ

</comment></comment></comment><comment><USER8> Looks get cool, nice work.

In your FAQ it says:

There are no special requirements. There is nothing to install and you don't need any technical know-how for setting up and using >>> mailparser.io.<<< No coding is required.

Just pointing out a potential syntax error. Otherwise if it's meant to say mailparser better explain what that is.

<comment><AUTHOR> Thanks for the heads up, I just fixed it! mailparser.io is my other product which I launched a couple of years ago. Customers kept asking for document parsing capabilities so I thought it would be a good idea to start Docparser. For the FAQ I copied some text and apparently forgot to properly proof read it :)

</comment></comment><comment><USER9> The Zapier integration is why I'm going to try this one.

</comment><comment><USER10> Save yourself a lot of support time/costs and remove the 'free' option. Your homepage sells the product well and shows its benefits. From the feedback you've already received it looks like you are providing more than $50 worth of value.

</comment><comment><USER11> I'm always surprised by how well `pdf2text --layout` works for even complicated looking PDFs. Has been better than most specialised (free) web services I've tried

</comment><comment><USER12> Looks really good!

A quick advert for PDF Tables [https://pdftables.com/](https://pdftables.com/) \- we're a bit more API-focussed.

</comment><comment><USER13> Depending on how well this works, this could be extremely useful for the electronics industry, where everything is locked in a PDF - allowing someone to build n in-depth research tool that would allow engineers to find the optimal part(using complex queries), from any manufacturer, very fast - <USER2> from the broken situation of today, where engineers spend tons of time researching , and often don't get tclose to the ideal.

</comment><comment><USER14> I wonder how their software works. I think there's untapped potential in adobe's postscript.

<comment><USER15> The file format itself has all the information required to extract text from a rectangular area. Frameworks like PDFBox and iText have supported it from a long time.

It's upto users to define what are rows and columns. In most programmatically generated PDFs, this is easy. But in manually typeset PDFs, there are lots of edge cases like variable row heights or column widths, slanted table borders, stuff like that.

<comment><AUTHOR> That's right! The user defines a rectangular area and we then extract the raw text based on the position. For table extraction we use tabula.java under the hood.

</comment></comment></comment><comment><USER16> Tried giving this[0] a shot but even just a single page was too large for the 4MB limit.

[0] [https://archive.org/details/averageweightofm41fult](https://archive.org/details/averageweightofm41fult)

</comment><comment><USER17> I gave it a go and couldn't get useful data extracted. I sent a support query with attached PDFs.

</comment><comment><USER18> Your pricing tables mention webhooks but the faqs below them don't explain what those are.

</comment><comment><USER19> nice! I wish I knew about this earlier, I had built a version of this on my own to solve this very problem.

</comment><comment><USER20> No source? No, thanks!</comment>


Pandora Used to Spend 119% Of Revenue on Royalties - <AUTHOR> http://mediamemo.allthingsd.com/20110212/pandoras-music-fees-are-huge-and-not-that-bad/ <comment><USER2> I wish there was a 'compulsory licensing' for individuals for personal use. Pay a lump sum and then you're obliged to receive a license for downloading whatever you want from whatever source you like. If the MPAA/RIAA goons log your IP address and send you a notice of copyright infringement, slam the license on their face, and politely ask them to fsck off.

<comment><USER3> Would you support the same compulsory licensing for the software you write? Are shareware authors bad people? (I'm trying to push this argument to understand why we need to treat music differently).

<comment><USER4> Music isn't different, but it's treated that way presently. For instance, if I build a website using Windows, .Net, and SQL Server, I don't have to give Microsoft 50% of my revenue. Same with shareware. I don't have to rely on other big companies to negotiate deals with the shareware authors. I just buy the software directly from them.

<comment><USER5> This is a poor analogy. Pandora isn't paying music fees once to listen to the songs in their office, they are paying recurring fees because they then redistribute that music to others in a streaming fashion.

<comment><USER4> That's because I wasn't making an analogy. I'm showing how two similar business transactions (ie, they both involve being able to use content of some kind be it software or music) are artificially made different by laws and "leverage". I mean, there are very few software companies that can place the limitations on their software and charge the same way the music and movie industries do.

</comment></comment></comment></comment></comment><comment><USER6> Splitting at least 50% with the studios or labels is pretty standard. It's one reason why the Apple 30% app store tax makes no sense for some businesses (ebooks, vod, music).

<comment><USER7> Or alternatively it's why record label contracts make no sense anymore.

</comment></comment><comment><USER8> Facebook used to spend (1/0)% of revenue on hosting.

<comment><USER4> So facebook spent a mathematically undefined amount on hosting? Sounds like something a BigCo would do to get out of paying their hosting bill.

</comment></comment><comment><USER9> Content producer makes decent money. Middlemen (aka "Internet companies", HN) freak out. News at 11.

<comment><USER4> There's a difference between making money and highway robbery. And note that we aren't talking about content _producers_ making money. We're talking about middlemen who serve very little purpose anymore making far more money than they deserve.

<comment><USER10> nobody "deserves" anything.

<comment><USER4> I'm sure we could have an interesting philosophical or religious debate over that subject, but it's not really relevant to my point. My point is that record labels take far more out of the system than they put in. That's bad both from a moral standpoint of what people deserve and a pragmatic standpoint of efficiency.

<comment><USER11> According to you they take more out, but the truth is, they put in just as much. Artists willingly go to labels because most of the time, they either don't have the resources or just aren't interested in dealing with everything that has to do with the music business (it is and always has been a business). They just want to concentrate on what they do best: playing music.

Unless you outlaw business, there will always be labels because there will always be an artist that doesn't know how to deal with the business side of the industry. They also might want connections that they otherwise wouldn't be able to have.

Venture capitalists serve the same purpose as a record label, yet this entire forum is based around the industry and nobody here seems to have a problem with them.</comment></comment></comment></comment></comment>


Major League Baseball's MLB Advanced Media Is a Quiet Digital Giant - <AUTHOR> http://www.newrepublic.com/article/121596/major-league-baseballs-mlb-advanced-media-quiet-digital-giant

<comment><USER2> I wonder if MLBAM would get more publicity (especially in this community) if it wasn't tied to Major League Baseball. According to the article they had 60 million stream on opening day which seems to be a multiple of Twitch's record for a single day. But since MLBAM is a private company that has no intention of ever being acquired or getting an IPO, it is mostly ignored in this space even though it might have a bigger industry impact that many companies we focus on.

<comment><USER3> I believe they're handling the tech for a lot of other video streaming services (like HBO Now).

It's a private company, but they are owned by the teams, and they are perfectly fine making extra money from it I imagine :]

</comment></comment><comment><USER4> _In the years since lost Giants fans figured out how to get their fix, Major League Baseball (and other live sports, resistant as they are to recording) have kept fans subscribing to cable when they otherwise would be perfectly happy to cut the cord._

Weird. MLB.tv was the reason I finally did cut the cord. Once you get around the blackouts, you get all the baseball you can handle.

<comment><USER5> How do you get around the blackouts? I've never signed up because it won't let me watch my team's games.

EDIT: well the article mentions masking your IP, was that what you were talking about?

</comment></comment><comment><AUTHOR> For those who don't know after last years Game of Thrones debacle, HBO now uses MLB's infrastructure to run HBO Now.

</comment><comment><USER6> I posed this comment the other day on another thread, but it is also relevant here

At AWS Re:Invent last year someone from the MLB gave a great presentation[1] on technology usage in baseball and its benefits. It really opened up my eyes to a whole segment that I had never really considered.

[1] - [https://www.youtube.com/watch?v=847HY- JATrs](https://www.youtube.com/watch?v=847HY-JATrs)

</comment><comment><USER7> I'm surprised that article didn't mention this: [http://www.geekwire.com/2014/internal-memo-hbo-cto-otto- berk...](http://www.geekwire.com/2014/internal-memo-hbo-cto-otto-berkes- explains-abrupt-resignation/)

</comment><comment><USER8> I wish NASCAR would take an MLB-like stance to races. NASCAR's efforts are pathetic and insultingly expensive for what little you get.

</comment><comment><USER9> I just subscriber to the audio portion of the MLB.tv but it is a great service.</comment>


Meetings.IO acquired by Jive Software - <AUTHOR> http://investors.jivesoftware.com/releasedetail.cfm?ReleaseID=718762

<comment><USER2> Congratulations. Would be great if they shared more details of the deal.</comment>


How Samsung inflated its performance scores - <AUTHOR> http://www.theguardian.com/technology/2013/oct/13/samsung-benchmarking-apps <comment><USER2> "We've already started work on making sure that all future versions of benchmarks we get will come with unique package names." \- Anandtech

After that Samsung will just figure out some other identifying feature to recognize the benchmarks. Naturally we might go overboard and do random obfuscation on everything, that might solve the issue for the journalists who use them one off.

However for benchmarks that are published in the Google play store that is impossible, so there is no real way for benchmark developers to 'immunize' their products for this sort of approach.

Disclaimer: I am employed in developing Mobile benchmarks, and our product is something they cheat on. Avoiding devices that cheat is very much in our interest.

<comment><USER3> > After that Samsung will just figure out some other identifying feature to > recognize the benchmarks.

Yep, reminds me of 3DMark2003 when NVidia and ATi "optimized" their drivers by disabling, altering or swapping the benchmark's shaders for their own or less complex versions

</comment></comment><comment><USER3> > The phone giant has proved that benchmarking apps are vulnerable

The only thing they have proved is their willingness to game benchmarks. ATI and NVidia were gaming 3DMark 10 years ago.

Also interesting to note, though Samsung is definitely more than willing to game benchmark despite their protests (and looks like the worst offender by a _pretty long shot_ ), Anandtech found out they're far from the only company doing so: [http://anandtech.com/show/7384/state-of-cheating-in- android-...](http://anandtech.com/show/7384/state-of-cheating-in-android- benchmarks)

Edit: turns out this was mentioned in the article, but the way it's presented, what the fuck Guardian?

> Anandtech, a site where you could get the (wrong) impression that benchmarks > are the only reason to own a gadget

<comment><USER4> Anandtech's Article:

Cheaters: Samsung, LG, Asus, HTC

non-cheaters: Motorola, Google, Nvidia, Apple

See any patterns?

<comment><USER5> Not really, care to enlighten me?

<comment><USER6>
      Cheaters: Samsung, LG, Asus, HTC

Korean companies

      non-cheaters: Motorola, Google, Nvidia, Apple

US companies.

I for one can't help but see a slightly xenophobic pattern in the poster's comment.

<comment><USER7> ASUS and HTC are Taiwanese, not Korean.

<comment><USER6> I stand corrected.

Thanks

<comment><USER8> Still... Korea+Taiwan vs US.

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> The funny thing is that despite being caught out doing this a while ago with the S4, they have no choice but to continue doing it regardless how embarrassing it becomes. If they don't, their next generation devices may score only slightly more (or less than) than the current gen devices.

They painted themselves into a corner from which there is no escape. And they only have themselves to blame.

<comment><USER10> But it's not like the market punished them at all. They are still selling lots of them.

Apple is the only that held them accountable in court, at least a little it. These b*stards are shameless [http://cdn.mactrast.com/wp- content/uploads/2011/09/Samsung-A...](http://cdn.mactrast.com/wp- content/uploads/2011/09/Samsung-Apple-Cable-Copy.jpg)

<comment><USER11> Your proof that "Samsung are bastards" is because they have a connector that is either a PDMI connector, or something that looks suspiciously similar?

<comment><USER12> How is this standard called: [http://media.idownloadblog.com/wp- content/uploads/2011/09/Sa...](http://media.idownloadblog.com/wp- content/uploads/2011/09/Samsung-Charger.png) ?

<comment><USER11> A cube?

</comment></comment></comment></comment></comment><comment><USER13> People still buys. In business sense, it is funny. They cheated and impressed as much as they can and made really large volume of sale. Media reporting like this does not seem to make much difference. Other than few hackers/engineers/programmers, majority of consumers don't give a thing on benchmarks. Too bad.

</comment><comment><USER14> The CPU/GPUs keep getting faster but this idiotic PPI race is forcing manufactures to cheat so they can appear faster than the previous generation. On a 5" display anything over 720p is overkill.

<comment><USER3> A number of benchmarks have an "off-screen" mode with fixed-resolution rendering specifically to avoid native resolution artefacts. That provides both the absolute hardware power in comparison to other devices and the device's "feeling", how its hardware meshes together (aka if it has enough power to drive its own screen). The second one is arguably the more important one wrt user experience and the ability to actually use the device.

GLBenchmark has both onscreen and offscreen modes, and Anandtech posts both every time.

</comment></comment><comment><USER15> All I can think is, imagine if Apple did this.

</comment><comment><USER10> Samsung is one shady company. They get away with murder in South Korea, given that they make up a huge chunk of SK's GDP.

[http://en.wikipedia.org/wiki/Lee_Kun- hee#Samsung_scandal](http://en.wikipedia.org/wiki/Lee_Kun-hee#Samsung_scandal)

They do make decent electronics, but I wouldn't trust anything they say.

<comment><USER16> So the chairman was found guilty of financial wrongdoing and tax evasion.

Tax evasion is indeed serious business, but murder? I guess I would like to see several large business CEO's charged with facilitating murder by tax evasion. Would make for some interesting times, and likely tax cuts for the general public.

<comment><USER17> To "get away with murder" is a very common way of saying someone is successfully avoiding the consequences of their actions.</comment></comment></comment>


How do people look at Apple's movie trailers page? - <AUTHOR> http://www.gazehawk.com/blog/how-do-people-look-at-apples-movie-trailers-page/

<comment><USER2> If you want someone to look at something, only give them one thing to look at.

<comment><USER3> As the author of this blog post, I wish I had thought of that line :)

</comment></comment><comment><USER4> It looks like people aren't ping-ponging around. It seems like the most important factor is location which seem somewhat trivial but is still really interesting in the detail we can get.

The trailer site is a marketing tool and it appears there are certain slots that should be more valuable than others. While some of it is obvious, things like avoiding the left are not.

My guess on why no one looks on the left side is the utilization of the right rail which moves the center zone right and it's distinctive appearance as opposed to the rest of the page probably accounts for why the right rail gets a bit more attention than the left column of posters.

That's just speculation, but it would be cool to remove the right rail, recenter the trailers and see what changes!

</comment><comment><USER5> Have you concidering that this ping-ponging is actually people doing natural search patterns that they prefer. That they'd rather not be controlled and funnelled when browsing content. The equality this design gives allows you to emulate the old fashion store experience.

</comment><comment><USER6> It's worth noting that when you're doing multiple significance tests, the threshold for significance goes up dramatically. Naively, if you're doing 20 tests, you should expect one to be statistically significant, even if the null hypothesis is true.

That 3 were statistically significant from a sample of 25 is, itself, not statistically significant and any attempt to explain them defaults back to just-so stories.

An interesting test to run would be to see whether the same outliers held when new movies are added to the page which shift the position of the existing movies.

</comment><comment><USER7> I didn't understand the point of this post. Perhaps I've been spoiled by the fascinating little tidbits from blogs like OK Cupid's, but I found no tidbits here. Fascinate or educate me, please. :)

<comment><USER8> Failing to reject the null hypothesis as they did is still a worthwhile result

</comment></comment><comment><USER9> Apple puts up a lot of foreign language movie trailers. People who view the page a lot and don't enjoy foreign language films might skip them. This might account for some of the results.

</comment><comment><USER10> One time I complained (aka ranted) to Apple about the movie trailer page, and actually got a response back.

</comment><comment><USER11> What devices do they use? Technically a good webcam that can detect and track head and eye would do the trick, but I've seen the head gear and other funny setups.

</comment><comment><USER12> I think it is a neat collection of the upcoming movies. Also the Front Row app inside OSX lists the trailors from it.. So all in call cool place to get your fav. trailers..</comment>


Seth's Blog: The talking pad - <AUTHOR> http://sethgodin.typepad.com/seths_blog/2009/08/the-talking-pad.html <comment><USER2> I had Seth's blog on my Google Reader RSS for maybe 3 months. It seemed interesting and novel at first. Then, it started looking vacuous and empty. I dropped the feed. I checked the link to see if something changed in my perception/assessment. No, no change. Maybe I am shallow, but I find his blog shallow. There.

<comment><USER3> I actually enjoy - I guess to each his own, my reason for liking might be the same reason for your not liking (brevity)... but I think he cuts the fat most of the time.

 __the only thing that makes me weary about this technique is that salesman use it known as the four square...

[http://www.edmunds.com/advice/finance/articles/47277/article...](http://www.edmunds.com/advice/finance/articles/47277/article.html)

but if its used in a genuine way, Im sure it helps.

</comment></comment><comment><USER4> There a book built around this concept: <http://www.thebackofthenapkin.com/>

I'm not a salesman, so I've never tried this technique for sales, but I'm always surprised how much better people can understand things when I diagram them in real time using a piece of paper than with any fancy infographics I might have carefully constructed ahead of time.

</comment><comment><USER5> Or...you could just learn to use Powerpoint well. Does anyone think Steve Jobs would be more effective if he stood up there with a yellow notepad?

The idea that "talking to the screen" is inherent in using Powerpoint just seems a little silly to me.

<comment><USER6> For a big presentation, it makes sense: nobody expects to be talked to directly, so it doesn't matter that Steve Jobs is giving them 0% of his attention instead of .1%. But in a more intimate setting, using a Powerpoint presentation is like staring at your shoes.

</comment></comment><comment><USER7> Am I missing the point of this, or is all he saying is 'it's easier for people to understand if you do a quick doodle of what you mean'.

Is this rocket science?

<comment><USER8> No, and to me that's what makes Seth Godin's stuff so appealing. It's so obvious most of the time, yet it's stuff people time and time again fail to recognise and do themselves. He has one clear message which he drives through in all his books and in his presentations. It's not about new techniques or silver bullets, it's about getting back to what matters, and that's simply having a relationship with the person our dealing with.</comment></comment>


Exploiting Network Cards - <AUTHOR> http://www.links.org/?p=330 <comment><USER2> Remember how in "a Fire upon the Deep" a ship carrying countermeasure that was taken out by the Blight? Latest openssl / debian fiasco and bugs like this show just how trivial it must be for a powerful adversary.

</comment><comment><USER3> Wow, that is impressively evil. Maybe that's why vendors don't want to open their firmware.

</comment><comment><USER4> I'm not quite sure I see the real threat here. Barring remotely exploitable firmware bugs, this family of exploits requires access to the hardware. No security model anywhere can protect a machine from an attacker with physical access...

<comment><USER5> From the OP:

2) as an extension to 1) above it is amazing to discover how simply firmware can be updated over the wire on specific NICs,

<comment><USER6> _on specific NICs_.

This is very important. The rich virus ecosystem that developed in windows did so because all windows installs are essentially the same.

Attacks on your NIC in not something I'd lose sleep over simply because there are so darn many nics. I have enough trouble simply getting the authorized drivers to run on a dozen nics _of the same model number_ consistently. How much harder would it be to get an exploit to run over the wire on all but the tiniest fraction of installed nics.</comment></comment></comment>


Coachella Valley Newsroom Police Scanners Go Silent - <AUTHOR> https://nbcpalmsprings.com/2018/12/05/coachella-valley-newsroom-police-scanners-go-silent/amp/?__twitter_impression=true <comment><USER2> Public safety radio traffic shouldn't be encrypted, full stop. These are public airwaves, carrying non-PII data between public servants, no one is calling out SSNs over a public safety network.</comment>