Federal Circuit case renders many broadly written software patents invalid - <AUTHOR> http://www.patentlyo.com/patent/2011/08/if-the-software-method-is-not-patentable-then-neither-is-the-computer-readable-medium.html

<comment><USER2> The court's opinion in this case (the _CyberSource_ case) is at [http://www.cafc.uscourts.gov/images/stories/opinions- orders/...](http://www.cafc.uscourts.gov/images/stories/opinions- orders/09-1358.pdf).

Tl;dr: The three-judge appeals court panel affirmed a summary judgment of invalidity. The panel announced a pretty straightforward test as one "filter" that can rule out patentability for certain claims:

1\. If a method can be performed by the human mind alone, or with paper and pencil, then it's an "abstract idea," and therefore unpatentable under Supreme Court precedent.

2\. If as a practical matter [a] the method _cannot_ be performed with paper and pencil [b], then it passes the filter described in 1 above [c].

3\. If a method would be unpatentable under 1 above, then a claim to a storage device encoding computer instructions for performing the method is likewise unpatentable.

NOTES:

[a] In its discussion, the court distinguished a couple of prior cases where such _non_ -paper-and-pencil methods had been held patentable. See pages 20-21 of the PDF. EDIT to respond to petegrif's comment below: One of the earlier methods that had been ruled patentable was "for rendering a halftone image of a digital image by comparing, pixel by pixel, the digital image against a blue noise mask ...." The _CyberSource_ panel distinguished this precedent by saying that, _as a practical matter,_ that earlier method could _not_ be performed by the human mind or with paper and pencil; see page 21 of the PDF.

[b] An unanswered question: How exactly are ordinary people supposed to determine whether a method can or can't be performed with paper and pencil "as a practical matter"?

[c] Even if a method gets past the "paper and pencil" filter, there are still other filters to pass before it will be patentable---but once the Patent and Trademark Office has issued the patent, then a presumption of patentability applies.

COMMENT: This is an area where the net effect of the precedents is not entirely clear. It wouldn't surprise me if the court were to take this case _en banc,_ namely to have all of the court's 12 judges rehear and redecide the case in an attempt to clarify the law. (An _en banc_ opinion is generally regarded as carrying more precedential weight than an opinion by a three-judge panel.)

<comment><USER3> The problem I have with this is the following. a) There is no software that we cannot put into hardware - literally! Software and hardware are interchangeable. So the oft cited distinction between s/w and h/w is, to say the least, somewhat arbitrary. b) "If a method can be performed by the human mind alone, or with paper and pencil..." This test sounds as if it might make sense but runs into real problems once you bear in mind issues of computability. E.g. is it therefore patentable if although it could in principle be performed by the human mind with a paper and pencil the degree of computation required is so enormous that such a method is completely impractical. e.g. real time graphics processing. I suspect that the class of such methods is extremely large.

<comment><USER4> I don't see the problem with A. If you take the software, which can't be patented, and put it into hardware, you can patent the hardware. This seems perfectly reasonable to me, and it holds pretty closely to the original idea of patents: A specialized device that performs an action is an invention, but the act being performed is not an invention. I also don't think that software that emulates the hardware is not in violation of the hardware patent.

I think B is a much bigger problem. Any computer program could be performed with pencil and paper, by getting a big file folder to simulate RAM, indexing it by numbers, and performing assembly instructions by hand with post-it notes as registers. I think the major exceptions are interfacing with other components, including UI systems and networking, and anything with a real-time component.

<comment><USER5> > Any computer program could be performed with pencil and paper, by getting a > big file folder to simulate RAM, indexing it by numbers, and performing > assembly instructions by hand with post-it notes as registers

Indeed. But surely if the purpose of the algorithm is something like "find whether this combination exists in a set of millions / billions of records within a tractable time" then it cannot possibly be done by hand in a tractable/practical way -- and it will fail this test?

<comment><USER6> It's still just an algo. It's still just math.

<comment><USER7> Yes but when time-sensative information relies on speedy calculations or approach then there is inherent usefulness to the invention. A competing firm may choose to solve the issue by paper in order to avoid lawsuits for stealing the patentable invention but its impractical.

<comment><USER8> So an otherwise fundamentally unpatentable algorithm could become patentable "when used in a time-sensitive application"?

<comment><USER9> Or, an otherwise fundamentally unpatentable algorithm with today's core counts could become patentable five to ten years from now when pocket computing power is measured teraflops?

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> > Following precedent set by Benson and Abele, the court here held that an > unpatentable mental process remains unpatentable even when restricted to use > on a computer.

Really, really hoping this logic survives and becomes widely applied.

<comment><USER11> I can imagine certain individuals making a lot of money as expert witnesses, demonstrating the execution of patented software processes completely mentally.

<comment><USER8> Wouldn't you think that "mentally" includes the use of pencil and paper? Given enough of that and time I can simulate any classical computer.

<comment><USER12> In a sense, yes. But it might simply be that you can't patent anything that a normal person (say, the judge) could easily do with a pencil and paper.

So things like "See if the guest's name is on the guestlist" might be found unpatentable, but complicated sequences of instructions (which you have specifically laid out) for which you really _do_ need a computer (or some other machine) might still be patentable.

I'm not a lawyer, though.

<comment><USER6> If you're performing a computation that cannot be done with pencil and paper, a computer cannot do that computing.

<comment><USER12> As another post is pointing out, there is a "practicality" clause. If you can use a computer to do something that would otherwise take days to compute, it may still be patentable.

<comment><USER8> It's impractical to multiply two million-digit numbers by hand, but elementary schoolkids know the algorithm to do it. Does that imply that using a computer to multiply numbers of sufficient size would be patentable?

How about a particularly efficient multiplication algorithm that can be demonstrated by hand?

How about a linear problem optimization algorithm? [http://en.wikipedia.org/wiki/Karmarkar%27s_algorithm#Patent_...](http://en.wikipedia.org/wiki/Karmarkar%27s_algorithm#Patent_controversy)

How about a network optimization problem? <http://www.google.com/search?q=network+optimization+patent>

The whole idea of patents in a post-industrial economy is a farce.

</comment></comment></comment></comment></comment></comment></comment><comment><USER13> "CyberSource's patented invention is simple: when validating online credit card purchases, use IP address information (such as IP addresses) as a check against fraud. Thus, the patented method might raise a red flag if someone attempts to make a large internet purchase through an IP address that had previously been used for a fraudulent transaction."

IANAL and this is not legal advice, but the guys (probably) that tried to patent this should go f __* themselves.

<comment><USER9> Rather than do a drive-by downvote, I'm going to say that while I may share your sentiment to an extent, it has been my experience that HN usually prefers more substantive comments.

</comment></comment><comment><USER14> Patents are totally beyond me.

Supposedly there's a concept of "non-obviousness" but every patent that is disputed is strikingly obvious to a "person of ordinary skill in the art."

On a panel of 5 competent engineers, asked "How might we go about identifying potential credit card fraud on the Internet?" I suspect all 5 would independently bring up the idea of storing customer IPs and comparing that to IPs that have used that credit card in the past.

I can't help but feel like patent law is just a way for lawyers to extract money from people actually trying to make things.

</comment><comment><USER15> Title is slightly misleading. From the article, it sounds like they're just applying the usual standards for software patents to Beauregard claims. If this is the first time that's happened, that's pretty interesting... but it seems to me to be clearly the right result, and I didn't realize there was any serious debate about that question.

</comment><comment><USER16> > Here, the court repeated its stance that mere data gathering steps such as > "obtaining information" cannot be sufficient to "make an otherwise > nonstatutory claim statutory."

It's just poor drafting. If they'd said "do all this stuff to determine if the credit card is valid" and added " _if is valid, then execute the internet transaction, otherwise deny it_ " as part of the claim, then it would not merely be providing information - and could not be done with paper and pencil alone. You need to make a change in the world, i.e. execute the transaction. Usually, a patent would have later "dependent" claims, that further restricted an initial overly broad claim, but apparently they didn't here.

I get the impression that the court is being a bit pedantic, as it's clear what was meant; however, it is true that pure information can be used in many ways, not necessarily restricted to execute/deny.

</comment><comment><USER17> "(...) the court focused on prior case law holding that mental processes standing alone are not patentable." I hope judges will support those statements more and more. Really good news.

</comment><comment><USER18> Judges have NO IDEA how to interpret patents. I would claim that EVERY MACHINE is reducable to a (software) simulation, and that every software simulation can be (in theory) executed by the human mind with paper and pencil. While you could argue that the claims in this case are obvious, I find the reasoning used here to be contrary to ANY patent being issued for any machine or process.

<comment> buff-a Simulating a steam engine in your head doesn't actually pump water out of coal mines. However, "simulating" checking an IP address against a list produces _exactly_ the same thing as the claimed invention: _information_. If your patent produces _information_ then you're pretty much fucked. And rightly so.

<comment><USER16> If checking the IP leads to a result, such as blocking the user, it could not be simulated with paper and pencil. e.g. Amazon's infamous one-click purchase patent could not be simulated with paper and pencil.

One nice quality of this test is it makes the patent less abstract, more concrete, and therefore less broadly applicable: one of the arguments for mathematical algorithms not be patentable is that they are too general, and a monopoly on them would block too much.

<comment> buff-a (IANAL. This is my opinion. Welcome to correct me.)

 _If checking the IP leads to a result, such as blocking the user_

"blocking the user". What does that mean? It means not giving the user what they asked for. It is absolutely doable with pen and paper, because the "user" is being "blocked" from "information".

But even if that were not the case: suppose it where a physical door being locked or unlocked. Well done, you've just attempted to patent a fucking bouncer.

Basically you can patent inventive things. But if your patent can't stand on its own if the computer part is replaced with a human operator, then it wont stand.

Amazon's oneclick travesty is totally doable on pen and paper and I hope someone will have another go at it.

<comment><USER16> It has to also be inventive.

The above is just an extra hurdle to disqualify claims that only produce information.

BTW: you can't block a user with pen and paper. You can obtain information for your decision to block them, but pen and paper, in isolation, have no impact on the world. Even something like a signed contract, PO etc has no effect, unless it is used in part of a system. If this doesn't make sense to you, recall that we're talking about the claims in the patent: of course, you can use pen and paper to do many things, but in a patent, it's not enough to claim you can work out the information with pen and paper; you have to also _claim_ what you will do with that information.

</comment></comment></comment></comment></comment><comment><USER19> Good. Overreaching software patents and the patent trolls who file them are a cancer on the software industry.

</comment><comment><USER20> The text is in Esperanto, the comments are a Befunge program. Anyone willing to post an executive summary?

<comment><USER2> EDIT: I just (re)posted a summary as a top-level comment.</comment></comment>


68% Improvement in Covid 19 Patients Treated with Remdesivir - <AUTHOR> https://www.nejm.org/doi/pdf/10.1056/NEJMoa2007016?articleTools=true <comment><USER2> Very promising early results. The caveats for non scientists to be aware of is that these are not randomized trials with a placebo and all - this is just through a mechanism called "compassionate use" that allows Gilead to give people the drug. Also, 68% of patients improved, the title implies that patients say a 68% improvement in their symptoms which is not the case, the 68% is the number of patients improved divided by total number of patients. To get a good picture of how much the drug improves outcomes compared to not having the drug administered, we need large placebo controlled randomized trials so we can get the statistical signal to see if it works and how well it works. As the paper states, those trials are underway.

</comment><comment><USER3> It's a good start, certainly good for Gilead and the wealthy who can afford it. The trouble is that the synthesis is a multistep horror that is difficult to scale up. There is a step to install the nitrile group, which seems to be required, which takes place at dry-ice temperature. And you need gram amounts per patient and the drug comes as a lyophilized powder, to be reconstituted and taken by injection.

Not a game-changer, when you have millions infected, many in poor parts of the world.

</comment><comment><USER4> _Yawn_...

<comment><USER5> Please don't do this here.</comment></comment>


Bay Area Pollutant Levels Drop for Second Week - <AUTHOR> https://blog.aclima.io/bay-area-pollutant-levels-drop-for-second-week-b51be2dc5677 <comment><USER2> Anecdotally, the bay area seems to have had rather unstable weather the past couple of weeks.

If the west to east winds were stronger than usual, could that affect the observed pollutants?</comment>


New Emacs Org-mode talk by Carsten Dominik - <AUTHOR> http://www.nf.mpg.de/orgmode/guest-talk-dominik.html

<comment><USER2> How can it possibly make sense to zip the video files? It ruins any chance one has of progressively downloading as you watch, and it can't save any bandwidth.

<comment><USER3> There are two reasons I decided on zipping the video files: (1) you would want a "real" streaming server for a streaming-type of behaviour (2) I know a number of users who would find it difficult to save a video for offline- viewing, once they have it playing inside their browsers. Do you agree? I am happy to learn something new here as this is, as we mention somewhere in the text, the first time we host any video content. And by the way, my email address is given at the bottom of the page you are referring to and I only found your comment accidentally.

<comment><USER2> Progressive video download over dumb HTTP works very well, so it's unlikely you need a special streaming server for most use cases, and particularly not in this case. Modern browsers have native video support for Ogg Theora (Chrome, Firefox, Opera) or some codec in a QuickTime container now (Safari), so if the files weren't zipped there's a good chance that progressive video download would work for most of your audience without any special effort on your part.

Your second point is valid, I hadn't considered it as a serious problem. I think a better solution than a zip file is to provide a "download" link pointing to the file that serves it with the Content-Disposition HTTP header set. This requires some control over the web server (e.g. ability to run script, or set up an htaccess file), so it's not always an option.

Edit: sorry for complaining on HN rather than contacting you directly. I was venting because it's frustrating that I couldn't watch the first few minutes of the video to decide if it's worth watching/downloading the entire video.

<comment><USER3> Not a problem. I have actually tried the un-zipped approach: it does indeed work with Safari and Firefox for the Quicktime flavours. One thing I tend to do, however, is to fast-forward the movie once to decide whether I want to view all of it - and this is definitely not possible if it is not a special streaming protocol. But it is probably a good idea to provide more than one link for a movie (we do not have that many different ones anyway), so users can decide whether they want streaming or download only. Thanks!

<comment><USER2> That sounds like it's using the QuickTime plugin in both browsers. Firefox won't play anything in a QuickTime container natively. If you're using the native browser video playback support (aka HTML 5 <video>), you should be able to seek anywhere in the video without a special server as long as the web server supports HTTP range requests, which is part of HTTP 1.1 and should work by default with most configurations.

</comment></comment></comment></comment></comment><comment><USER4> Org-mode is my secret weapon. Org-mode + babel + agendas + latex = out of this world productivity.

</comment><comment><USER5> org-mode is awesome. I've used Emacs for a long time but never got the chance to use it. Then my task list was out of control. I sucked it up and spent a day to learn about org-mode. It has been amazing.

</comment><comment><USER6> Org-mode would be more appealing if they used markdown like everyone else.

<comment><USER7> Markdown sucks and org-mode is my refuge from it.</comment></comment>


Getting Unstuck - <AUTHOR> http://www.skmurphy.com/blog/2014/01/29/getting-unstuck-2/

<comment><AUTHOR> three suggestions:

        1. "Put one foot in front of the other" for two to three weeks: close out
           small tasks, don't look at the big picture but schedule a time to look at
           it candidly and let your subconscious work on it.
        2. Find a way to dramatically break the pattern of your day: fast for a
           day, volunteer somewhere for a day, go along an all day hike, spend a
           day at a museum or art gallery, etc...It's not about getting away from
           the challenge as much as finding a way to get some emotional distance on
           the constraints you are wrestling with
        3. Make a list of what you have accomplished in your life and the
           people you have enjoyed working with. Often when I have a setback
           I forget what I have done and tend to focus on the things I have screwed up.</comment>


Best acquisition employee mail from CEO,woot - <AUTHOR> http://latestgeeknews.blogspot.com/2010/06/best-acquisition-employee-mail-from.html

<comment><USER2> <http://news.ycombinator.com/item?id=1476110> \- original, sans blog spam.

<comment><AUTHOR> Looks like woot CEO's email has more attraction than its acquisition by amazon</comment></comment>


Team Behind Tinder Launches App to Help You Find Your Long Lost Twin - <AUTHOR> http://gotwinder.com/

<comment><USER2> You can do better than that for April Fools, Tinder team.</comment>


Show HN: Egonotifier – be warned when your GitHub repositories gain popularity - <AUTHOR> https://github.com/djaiss/egonotifier <comment><AUTHOR> Hey HN! As a maintainer of a repository with a decent amount of stars [1], there are some important moments I want to celebrate: \- When my repository reaches 1000 stars, for example \- When it reaches 500 forks. Stuff like that. Achievements that I can share with the community on Twitter, for instance. But I keep forgetting to check the number of stars and forks of my own repositories.

Open source developers don't have many ways to be recognized for their work. One of these marks of recognition is the number of stars of their repositories. It's a vanity metric, yes, definitely – but it's somehow important to represent if this hard work has an impact or not.

This is why I've built a simple system to monitor repositories on GitHub and warn me by email when my repositories reach certain milestones [2]. After a few weeks of dog fooding my own system, I think it's ready for public use. It's free, there is no tracking whatsoever and I just hope other GitHub users will find it useful.

Oh, and it's open source and released as MIT.

[1]: [https://github.com/monicahq/monica](https://github.com/monicahq/monica) [2]: [https://github.com/djaiss/egonotifier/blob/master/app/Helper...](https://github.com/djaiss/egonotifier/blob/master/app/Helpers/LevelHelper.php)</comment>


The great docker container escape, a CVE-2019-5736 proof of concept - <AUTHOR> https://github.com/q3k/cve-2019-5736-poc <comment><AUTHOR> I also made an automated build here:

$ docker run zoobab/cve-2019-5736-poc

$ strings /usr/bin/docker-runc | tail -n 2</comment>


The Uphill Battle Of Social Event Sharing: A Post-Mortem for Plancast - <AUTHOR> http://techcrunch.com/2012/01/22/post-mortem-for-plancast

<comment><USER2> Useful summary of the challenges (and opportunities) in social networking. He's written two other good summaries too:

<http://markmhendrickson.com/three-pillars>

<http://markmhendrickson.com/content></comment>


Digicel Will Block Advertising for Google, Facebook - <AUTHOR> http://www.irishtimes.com/business/technology/denis-o-brien-s-digicel-takes-on-google-and-facebook-1.2373553 <comment><AUTHOR> Surprised this hasn't made it on here yet. Mobile Operator in Caribbean plans to stem revenue for Internet's heavy hitters unless they share a piece of the pie.

Interested to read what some of the more enlightened Internet minds think about this. There is some sense to it, but it seems to fly completely in the face of net neutrality.</comment>


Clojure and Deps.edn: A basic guide - <AUTHOR> https://tomekw.com/clojure-deps-edn-a-basic-guide/ <comment><USER2> In addition to the post I will add here a nice video[1] that was recently uploaded from the very well known in Clojure community Sean Corfield which demonstrates the functionality and power of Deps.edn.

[1] [https://www.youtube.com/watch?v=CWjUccpFvrg](https://www.youtube.com/watch?v=CWjUccpFvrg)

<comment><USER3> Sean also goes into his experience with boot vs tools.cli on the defn podcast [https://soundcloud.com/defn-771544745/51-sean-corfield- aka-s...](https://soundcloud.com/defn-771544745/51-sean-corfield-aka- seancorfield)

</comment></comment><comment><USER4> What I really like about deps.edn is the ability to add git repos and also local projects as deps. Makes forking and testing libraries a charm.

Another wonderful tutorial about using deps.edn that contains additional tips for Emacs -- [https://cjohansen.no/tools-deps-figwheel-main-devcards- emacs...](https://cjohansen.no/tools-deps-figwheel-main-devcards-emacs/)

<comment><USER5> If using lein, there's this: [https://github.com/reifyhealth/lein-git- down](https://github.com/reifyhealth/lein-git-down)

</comment></comment><comment><USER6> EDN is to Clojure as JSON is to JS.

Shame it hasn't similarly transcended its home language because it has a killer feature: [https://github.com/edn-format/edn#tagged- elements](https://github.com/edn-format/edn#tagged-elements)

<comment><USER7> FYI, there are edn implementations in many other languages: [https://github.com/edn- format/edn/wiki/Implementations](https://github.com/edn- format/edn/wiki/Implementations)

<comment><USER8> None of which work very well, and most are completely broken. The only ones that completely work are CLJ/CLJS/CLJR's internal implementations, so you have to pull in all of Clojure just to read EDN from java, for example.

Transit is a much better choice here, but even that tends to be a bit non- idiomatic in languages like Python. That's not really the fault of Transit though, languages are just too different to have a single communication protocol work flawlessly between them all.

</comment></comment></comment><comment><USER9> deps support in cursive is excellent, just as an aside. Feels very slick to get a project going.

[https://cursive-ide.com/userguide/deps.html](https://cursive- ide.com/userguide/deps.html)

<comment><AUTHOR> True. This project was created with Cursive :)

</comment></comment><comment><USER10> thanks for the guide! I've sorta been avoiding dipping my toes into deps.edn. Maybe I missed it, but this doesn't really seem to illustrate any advantage over lein

now you have to hunt down extensions/plugins to do testing and make uberjars, cobble it all together yourself and then hope they remain maintained going forward

what's the benefit? you can make wacky nonstandard directory layouts? I feel like I'm missing the motivation or maybe my problems are too simple. that said it does seem like a nice low level tool (ie. maybe lein could be implemented in terms of deps.edn)

<comment><USER7> Build tools like lein or Maven attempt to build a "declarative" definition of a project and then apply a set of plugins to that model using an implicit lifecycle. In reality, simple projects don't need that complexity and complicated projects only match 80% to either the lifecycle or the plugins available, so you end up wedging imperative things onto the build, hunting down obscure plugins, or hacking your own. Other build tools (like boot, or even Ant) acknowledge that builds are actually programs built from similar tasks.

deps was designed to find a sweet spot in the middle of this with deps defined as data, aliases capturing program executions as data, but builds as programs. As such, the scope is drastically narrowed in deps to just a) building classpaths (by resolving dependency graphs) and b) launching programs.

As such, this tends to be a dramatically simpler model to start with (your initial deps.edn can be empty), and a model that is easy to understand as you scale up. I think there is more to do in how we model "tools" (esp tools shared across projects) and program composites, but nothing prevents you from building these yourself if needed (as you have the full power of Clojure at your disposal).

You can find a pretty comprehensive list of deps.edn tools at [https://github.com/clojure/tools.deps.alpha/wiki/Tools](https://github.com/clojure/tools.deps.alpha/wiki/Tools)

<comment><USER10> Thanks for that. I've read up a bit more and I see how you're trying to build a more easily extensible ecosystem. Hope it all get easier to use with time.

I read up a bit more about how to setup a project and the github/local/remote library stuff is very powerful (and not as smooth to setup in lein). I'm wondering about your workflow and how you are mixing and matching local libraries with github and maven/clojar ones. Do you have a separate deps.edn file for local development that point to local "fluid" libraries and then you have periodic freezes where you substitute it for a public deps.edn file and then push it to github/maven?

</comment></comment></comment><comment><USER11> Another working example: [https://gitlab.com/tvaughan/kibit- runner](https://gitlab.com/tvaughan/kibit-runner) and [https://clojars.org/tvaughan/kibit- runner](https://clojars.org/tvaughan/kibit-runner) (with publish to Clojars)</comment>


Decision Table Patterns - <AUTHOR> https://www.hillelwayne.com/post/decision-table-patterns/ <comment><USER2> Logic tables are a secret weapon when refactoring spaghetti code.

You take all the conditions relevant to the part you're refactoring.

You refactor common parts of the conditions (so if one if has (x>3 & y<2) and another if has (x>3 and y>10) you get (x>3), (y<2), (y>10).

You put that into a table, write all possible values that can happen (sounds like combinatoric explosion but it's usually not, because many of them depend on each other and lots of combinations cannot happen or aren't relevant to the result) - then rewrite the whole thing looking at the table.

       x>3 | y<2 | y>10 | effect
       F   | F   | F    | ...
       T   | F   | F    | ...
       F   | T   | F    | ...
       T   | T   | F    | ...
       F   | F   | T    | ...
       T   | F   | T    | ...

Another form is

       x   | y      | effect
       <3  | <2     | ...
       >=3 | <2     | ...
       <3  | 2...10 | ...
       >=3 | 2...10 | ...
       <3  | >10    | ...
       >=3 | >10    | ...

Usually if the code is old enough there's redundant branches, checking conditions that can't happen, duplicated code "just in case", etc.

With the table you can look at it and see input-output and refactor it without worrying about changing behaviour.

For simple cases it's overkill, but with big enough mess it's a life-saver.

<comment><USER3> The real secret weapon is to take the truth table and use a karnaugh map to reduce it to just the necessary states in a structured way.

<comment><USER2> It's usually not a truth table, the "effect" column is stuff like "call f1 then f2" or "call f2 then f1 then f2 again".

You can transform it into a truth table by pulling these into input variables "f1ShouldBeCalledFirst", "f2ShouldBeCalledFirst" etc, or by using separate table for each binary decision, but that was overkill for my needs and it caused combinatorial explosion. YMMV.

</comment></comment></comment><comment><USER4> Decision table's are really good at representing complex rules, in a language with pattern matching u can convert a nested if else block to a decision table that is much more readable, as an example see [https://github.com/finos/morphir- examples/blob/master/src/Mo...](https://github.com/finos/morphir- examples/blob/master/src/Morphir/Sample/Rules/Direct.elm)

<comment><USER5> That's a _really_ nice example! Might suggest this in code reviews as I come across quite a few complex nested if/elif blocks

<comment><USER2> You can also use sth like Map<List<Boolean>, Result> in languages with no pattern matching. Sadly map literals aren't pretty in some of these languages, but it's still better than a bunch of nested if-then-elses or switches.

<comment><USER5> Good point! I don't see why languages don't adopt pattern matching (unless the grammar really breaks it for whatever reason)

</comment></comment></comment></comment><comment><USER6> This article gave me a fair bit of nostalgic feelings. So much so, that I had to go and dig out one of my first university assignments from seven years ago[!], writing a simple Linux Shell, where I actually _had_ to use "decision tables". In my case I remember thinking about using an automata for a grammar to prevent my code from becoming an unmaintainable, unexplainable, SEGFAULT-y mess.

Most important of all, I remember the lecture assistant telling us that we "won't pass the assignment as long as I can bring your program to SEGFAULT."

Many of us struggled, SEGFAULT after SEGFAULT, with uneven quotes, pipes inside or outside quotes, double bars, double ampersands, etc. As the days progressed, many code-bases became more complex and more fragile as we tried to deal with the pesky inputs of the lecture assistant. When our turn came up, we all grinned while the lecture assistant tried in frustration to bring our shell to SEGFAULT. I remember pointing out "those inputs are not supported by the grammar, and walking him through the bits I list below". Those were the days, oh man :)

\---

      struct listNode {
       char *token;
       int type;
       struct listNode *next;
      };

      ...

      #define M_BEGIN  0
      #define T_WORD   1
      #define T_QUOTE  2
      #define T_BAR    3
      #define T_AMP    4
      #define T_NL     5

      ...

      int validateInput(struct listNode * head) {

       unsigned char smpshGrammar[6][6] = {
               {0,1,0,0,0,1},  // M_BEGIN
               {0,1,1,1,1,1},  // T_WORD
               {0,1,1,1,1,1},  // T_QUOTE
               {0,1,0,0,0,0},  // T_BAR
               {0,0,0,0,0,1},  // T_AMP
               {0,0,0,0,0,0}}; // T_NL

       struct listNode * iterator = head;
       int validInput = 1;
       int previousState = 0;

       while(iterator && validInput){

       if(DEBUG) printf(" Debug Information > Validating transition from Q%d to Q%d ... Possible:%d\n",
          previousState,
          iterator->type,
          smpshGrammar[previousState][iterator->type]);

       if(smpshGrammar[previousState][iterator->type])
       {
      previousState = iterator->type;
        iterator = iterator->next;
       }
       else { validInput = 0; }

       }

       if(previousState!=5){ validInput = 0; }

       return validInput;
      }

<comment><USER7> Interesting that you did this as part of a course! It makes a lot of sense, as I agree shell has a lot of conditionals to handle. I would say that the segfaults are an instance of the "else-idgaf anti-pattern" where the corner cases are undefined/broken. This seems to happen a lot in bash.

I use regular languages a lot in the Oil shell precisely because it forces every state and transition to be defined:

[https://lobste.rs/s/jyyuhn/decision_table_patterns#c_o49q52](https://lobste.rs/s/jyyuhn/decision_table_patterns#c_o49q52)

Related: _How to Parse Shell Like a Programming Language_ [http://www.oilshell.org/blog/2019/02/07.html](http://www.oilshell.org/blog/2019/02/07.html)

also related: [https://lobste.rs/s/jyyuhn/decision_table_patterns#c_yukvlr](https://lobste.rs/s/jyyuhn/decision_table_patterns#c_yukvlr)

<comment><USER8> It looks like "else-idgaf" is meant to describe not considering all cases. What do you think about pushing input validation to the caller; you write code that explicitly considers some subset of all possible inputs and thoroughly document that subset -- behavior for other inputs is not guaranteed.

<comment><USER7> I think if you have an assert() for the invalid input, that makes sense. I don't think documentation is enough in practice.

In my experience, you can write "don't call this with 0" in the comments, or you can write it in the documentation -- it doesn't matter. Someone will call it in an unexpected way. They will make it work for the happy path and not consider the other cases, because that takes time. (And that includes myself in many instances.)

So the only way to be sure is to blow up and make it a hard bug.

\----

I'll also note that very few functions are public APIs with documentation. I'm thinking about the bash codebase, which has 140K lines of C written over 30 years. There are a lot of informal internal APIs, and few documented APIs.

They are kinda stable but also subject to change. So I think assert() is the best way of "documenting" the expected invariants in these cases, which comprise the vast majority of coding situations.

</comment></comment></comment></comment><comment><USER9> This reminded me of Karnaugh Maps.

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

<comment><USER10> Also reminded of me that too. We used them extensively while studying in university.

</comment></comment><comment><USER11> A few years ago I was working with JetBrain's MPS [1] and got excited about it's projectional editor, which allows for different "projections" of your code, not just linear text. One of the things this enables is using descision tables directly within your code [2], as well as a bunch of other things like math notation or graphs for statemachines [3]. Being able to use another notation than just plaintext can make some code a lot clearer.

I know this isn't going to replace code as text anytime soon, but it looked really interesting. Does anyone know of other projects experimenting with representing code in other ways?

[1] [https://www.jetbrains.com/mps/](https://www.jetbrains.com/mps/)

[2] [https://www.jetbrains.com/mps/img/screenshots/2017.2/domain-...](https://www.jetbrains.com/mps/img/screenshots/2017.2/domain- specific-languages.png)

[3] [http://www.mbeddr.com/platform](http://www.mbeddr.com/platform)

<comment><USER12> Mesh Spreadsheet is explicitly designed to make it easier to view and write decision tables with a projectional editor, while keeping the code as text for storage, version control, etc.

[https://twitter.com/meshspreadsheet/status/13043816477064478...](https://twitter.com/meshspreadsheet/status/1304381647706447874?s=21) [http://mesh-spreadsheet.com/](http://mesh-spreadsheet.com/) [https://twitter.com/meshspreadsheet/status/12527139096409866...](https://twitter.com/meshspreadsheet/status/1252713909640986630?s=21)

</comment></comment><comment><USER13> Oh, and another thing, so I'm making another comment.

> Input Elimination: Often by using - we find that a column is unnecessary

I've found this to be true in many cases. However, efficiently calculating a potential "input elimination" has eluded me.

I've done research into various relational-database techniques. I've looked at binary decision diagrams (or their relational multi-valued counterparts: Multi-Valued Decision Diagrams). Etc. etc.

It is "obvious" that minimizing columns and removing unnecessary columns can grossly improve performance. But I can't find any efficient algorithm that detects this case.

Lets say we have Table ABCD (with 4 columns: ABCD). To test if Column C can be eliminated, I came up with:

        ABD = (Select a, b, d from TableABCD where C = true)
        ABD2 = (Select a, b, d from TableABCD where C = false)
        If ABD == ABD2, then C is redundant.

That's for binary variables. If C has multiple values, then you have to do this for every value C could have.

\</comment><comment>-

This seems inefficient to me. Especially if I'm checking every column to see if they're redundant. (Repeat the above process for A, B, and D). I feel like there has to be some kind of dynamic-programming magic (or even Greedy- algorithm) that can figure out the redundant columns all simultaneously. I just don't feel like coming up with the algorithm.

I can't believe that I'm the first one to investigate this problem. But I don't know the "magic word" for this to search on. I don't even know how to search the internet for this algorithm, even though I know its important. If anyone knows the most efficient solution, please let me know :-)

</comment><comment><USER14> One of those tables triggered my Collatz obsession.

</comment><comment><USER13> I'm looking at a lot of these... and it seems like coding of these "tables" needs to be discussed.

The most obvious decision-table encoding is the humble bitset. For example:

        A B C | T/F
        </comment><comment>---
        0 0 0 | T
        0 0 1 | F
        0 1 0 | T
        0 1 1 | T
        1 0 0 | T
        1 0 1 | F
        1 1 0 | F
        1 1 1 | T

Which would be represented as: 0x9D (10011101-binary), a simple 8-bit number (one byte).

Unfortunately, this table grows exponentially: 11-variable tables require 2048-bits, but this is still a 256-byte value that can be manipulated in a single-clock tick on AVX2 systems (Zen and Skylake). AVX2 supports AND, OR, NOT, XOR in a single clocktick (heck: Skylake supports 3 256-bit boolean instructions per clocktick. Zen2 supports 4 per clocktick)

\</comment><comment></comment><comment>---

While 2048-bit (11 variable) tables maximize memory bandwidth through SIMD instructions, the real "rich" instructions exist in the 64-bit world. I don't feel like making this post much larger, so I'll just note a brief summary now.

* Popcnt -- Provides a "Select Count( * ) from table", so to speak. 1-clock tick on Skylake, 4-per-clock tick on AMD Zen.

* PEXT -- Parallel-Extract, a bitwise gather command. 1-clocktick on Skylake (unfortunately slow on Zen: 18 clocks). This is your "Select" statement. Take the 8-bit (3-column) table 0x9D as an example (10011101-binary). PEXT (10011101b, 10101010b) == 1010, which so happens to be equivalent to "Select A,B from table where C=True".

Some other examples:

        PEXT (table, 01010101b) is "Select ... where C=False".
        PEXT (table, 11001100b) is "Select ... where B=True".
        PEXT (table, 11110000b) is "Select ... where A=True".
        PEXT (table, 00001111b) is "Select ... where A=False".

* PDEP -- Parallel Deposit, a bitwise scatter command. This is the exact opposite of PEXT. If you're building a larger table from a smaller one, getting ready for a "join" operation, this is useful. Ex: "Expanding" a hypothetical "AB" table into a "ABC" Table (making room for the new "C" column) can use the PDEP instruction.

* Summary: PEXT "Reads many column in parallel", while PDEP "writes many columns in parallel".

* Where PEXT and PDEP are inefficient (ie: everything outside of Intel chips), a careful mix of bitshift-and-AND operations can implement the above operations with reasonable speed.

* BLSR -- Reset lowest bit. The 0x9D table is converted into 0x9C, a useful operator for "iterator++" in C++ terms. For example, 0x9D across repeated BLSR commands changes as follows: 10011101, 10011100, 10011000, 10010000, 10000000, and finally 00000000. See TZCNT for more info.

* TZCNT -- Trailing Zero Count. A useful operator for "*iterator" in C++ terms. For example, the TZCNT(10011101) == 0, TZCNT(10011100) == 2, TZCNT(10011000) == 3. To convert fully into ABC column form, simply write out the index in binary. For example, "TZCNT(10011000) == 3", or 011 in binary (A=false, b=true, c=true).

"TZCNT(10010000) == 4" becomes 100 in binary (A=true, b=false, c=false).

\</comment><comment>

64-bit Popcnt, BLSR, TZCNT are all implemented in GPUs by the way. PDEP / PEXT is an Intel CPU-only trick, but its definitely one of the coolest operators I've seen.

Given that all of these instructions can be implemented in 1-clock tick on most hardware (except PDEP / PEXT), it seems important to learn how to use these instructions. Especially if you're manipulating logic tables in the form described in the blogpost.

\</comment><comment>-

This area of super-optimized bitmask based programming wraps full-round to Relational Algebra and SQL. Its a very intriguing corner of Comp. Sci for me.

Arguably, the classic "Table form" that typical SQL-databases use are simply the sparse-matrix form of these bitmasks I described above. Otherwise, the operators are identical in concept.

It also should be noted that hardware exists that executes these bitmask- tables extremely efficiently. Its called an FPGA (which these days, are primarily composed of 6-LUTs, or 6-column look up tables, aka 64-bit numbers). Manipulation of these tables alone is Turing complete!</comment>


Animal Crossing is home to 2020's hottest late-night talk show - <AUTHOR> https://www.theverge.com/2020/5/14/21257183/animal-talking-new-horizons-elijah-wood-danny-trejo-gary-whitta-late-night-show <comment><USER2> I tried an episode earlier this week - absolutely not my kind of thing (same as most US talk shows) but it is an absolute genius idea and extremely well done. More power to them.</comment>


The privacy market has many sellers but few buyers - <AUTHOR> http://www.wired.com/techbiz/startups/news/2007/09/privacy?currentPage=all <comment><USER2> It took me a while to realize this.</comment>


Tesco slashes prices of unfortunately named ISIS TVs - <AUTHOR> http://metro.co.uk/2014/11/04/tesco-slashes-prices-of-unfortunately-named-isis-tellies-4933885/

<comment><USER2> What bad luck for those guys.</comment>


Behind the scenes of a Daily Show interview - <AUTHOR> http://www.joelcomm.com/behind_the_scenes_of_the_daily_1.html

<comment><USER2> This isn't really surprising, but it is a little disappointing (I always hoped these guys were just ridiculously witty with their comebacks). Seems like it's par for the course though.

Back when the election season was in full swing I had the opportunity to appear in a taped segment for Real Time With Bill Maher. I'll probably write a longer blog post about the experience at some point, but long story short, most of his really biting jokes are pretty set up. For our segment they got members of the UCLA Democrat and Republican clubs, as well as a few "indies" who they had found at bars the night before (I was one of these).

It basically felt like the point of the Dem/GOP club members was to provide predictable responses. Bill would lob a highly controversial statement to a member of the Republican club, they'd respond with the same arguments everyone had heard a million times before, and he'd smack them down with a wisecrack. There was still some decent debate, but it was a bit of a let down. I don't get HBO, but my friends have told me they never saw the segment air, so apparently the producers weren't too fond of it either :)

</comment><comment><AUTHOR> I was a little surprised to learn that they blatantly shoot the stuff they're going to use in out-of-context edits. (Like the reaction shots, sitting there while Wyatt just reads off answers in different tones and styles, etc.) I always thought they just asked a ton of questions - some of them odd on purpose to get reactions - and then cut together stuff from that, but it seems they're even more direct.

<comment><USER3> seems to me it would be a little dishonest to do it any other way. At least this way the interviewee can't come back and claim they didn't know they were going to be made as ass of.

Then again I can see some of the characters they are interviewing just doing whatever simply to "be on tv".

<comment><AUTHOR> I'm not so sure it'd be dishonest unless they lied about who they were when they interviewed someone and purposely misled someone who had never seen the show during an interview.

That said, though, it does make sense to me (in hindsight.. :P) that they'd rather script and control the process than rely on luck/talent in getting a good set of shots to use - after all, it's a big business and sending a film crew + on-air talent all over the country (or world) to film could get rather expensive if they couldn't be assured of being able to make the required joke(s) afterward.

</comment></comment></comment><comment><USER4> I'm a bit disappointed that anyone who has seen a few of The Daily Show's interviews is at all surprised by any of this.

They quite clearly do it for laughs. It's not supposed to be journalism. As Jon Stewart famously put it:

<http://www.youtube.com/watch?v=aFQFB5YpDZE#t=7m15s>

</comment><comment><USER5> Well that explains why I always found the daily show/colbert report taped interviews so awkward.</comment>


Suits are back (cf. pg's submarine essay) - <AUTHOR> http://uk.reuters.com/article/2013/02/20/uk-fashion-menswear-savilerow-idUKBRE91J0IY20130220 <comment><USER2> The point of PG's essay is well-taken, but I'm not really sure how the linked article really applies other than at a superficial level. I can't find a recent press release from which this article was derived; the closest one is the cited Bain & Co. note from Oct. 2012, which is pretty old by current standards.

Additionally, the reporter here seems to have at least done a modicum of original research, given that he's quoting actual clothing makers. This is in contrast with the USA Today article cited in PG's essay, which quoted a PR guy, a GQ editor, and a consultant.

Thus, to the extent that the submarine theory applies here, it's probably just to show the long reach that a well-manufactured eight-year-old marketing campaign can have. But there were plenty of other marketing campaigns from that time that didn't stick around this long, so maybe that's an indicator that there is some real substance to this trend?

Of course, I've only done a little research into this. If someone can turn up the actual press release or other marketing push from which this article was derived, I will gladly reverse my opinion.

<comment><AUTHOR> This one also quotes a GQ editor!

Milan fashion week apparently started today.

[http://www.ft.com/intl/cms/s/2/8475bc40-7087-11e2-a2cf-00144...](http://www.ft.com/intl/cms/s/2/8475bc40-7087-11e2-a2cf-00144feab49a.html#axzz2LSmczUoJ)

[http://www.gq.com/fashion-shows/F2013/new- york/top-10-milan-...](http://www.gq.com/fashion-shows/F2013/new- york/top-10-milan-paris-moments#slide=1)

</comment></comment><comment><USER3> PG's submarine essay: <http://www.paulgraham.com/submarine.html>

(In case others are like me, and didn't have it memorized. :))

<comment><USER4> Annnnd on the flip side are bad PR dudes pissing a journalist off by offering to ghost write and ending up on Jim Romanesko's blog: [http://jimromenesko.com/2013/02/19/pr-mans-jaw-dropping- offe...](http://jimromenesko.com/2013/02/19/pr-mans-jaw-dropping-offer/)

Having spent a year and a half developing software for journalists, I'm certain that there are some lazy, careless journalists, but there are a whole lot more overworked and underpaid journalists, some of whom may not have the savvy to know when they're being duped (some due to ignorance, some due to lack of experience, some due to lack of resources).

PG notes that they were paying their PR firm 16k$ a month. Take a moment to ask yourself how much you think the starting salary for a reporter is, and then follow the link below:

[http://gawker.com/5829589/average-starting-journalist- pay-30...](http://gawker.com/5829589/average-starting-journalist-pay-30k-if- youre-lucky)

<comment><USER5> > Having spent a year and a half developing software for journalists

That sounds interesting. What did you write?

<comment><USER4> I work on DocumentCloud at Investigative Reporters & Editors.

<http://www.documentcloud.org> <http://github.com/documentcloud> <http://ire.org>

</comment></comment></comment></comment><comment><USER6> I don't think it can be emphasized enough how eye-opening that essay is. It totally changed the way I consume media. Reading about the "submarines" should be mandatory reading for anyone in school because it's that important.

</comment><comment><USER7> It always confounds and frustrates me how fashion labels are always some of the worst offenders in adapting to new technology. For one, so many of their websites use Flash, and it can generally be a pain to find any information about them.

I was in Paris a while ago, and I had to rely on a French version of Yelp to get some basic information of where I could get my shopping on.

</comment><comment><USER8> I'm curious about one thing -- the suits that are making a comeback, how similar exactly are they?

I think from afar they _look_ great and very close to clothes from the past, but how is the fitting -- comfortable? Or has there been zero innovation in clothe-making and clothes back then were just as comfortable to wear and fit just as well?

<comment><USER9> This will probably sound obvious, but well made suits and properly fitted shirts and suits aren't really uncomfortable a all. Of course most people don't factor in the costs of tailoring into their suit purchases, and buy inferior suits like the Jos. A Bank sales, which hey great if you're on the road all the time, but otherwise 2-3 basic suits, 2 pairs of shoes, some ties, and a few white and blue shirts will go a long, long way.

</comment></comment><comment><USER10> I'm a big fan of English suits, wish I had the money.

Here's a good example: [http://tailgate365.com/wp- content/uploads/2012/11/Ralph-Fien...](http://tailgate365.com/wp- content/uploads/2012/11/Ralph-Fiennes-in-Skyfall-585x350.jpg)

</comment><comment><USER11> The title of the article ("Timeless suits from London's Savile Row back in fashion") is a contradiction in terms. Either the suits are timeless OR they go in and out of fashion. Can't have both.</comment>


Ask HN: In building your startup, what are your biggest pain points? - <AUTHOR> <comment><USER2> In retrospective: neither the long working hours, nor the uncertainty / lack of job safety were an issue. The biggest pains were the hiring process and coping with different opinions about how to approach various tasks/problems (when you're used to doing everything yourself).

</comment><comment><USER3> product-market fit

<comment> alok-g Indeed. This is probably where the biggest risks are for whatever I am working or have worked on. Finding the intersection between what technology is capable of (product) and where there is business value (market), especially given that most of the avenues have already been explored, is hard.

I have ideas where product can be built within a few months (easier product), with a lot of competition already (market challenges). I also have ideas where there is technological uncertainly (product feasibility?) where much bigger time and investments are needed (which adds to economical/market challenges).

</comment></comment><comment><USER4> Doing sales

<comment><USER5> I second that. As a lone founder with a technical background, I suck at sales.

<comment><USER6> Possibly irrelevant, but if you don't mind me asking: wouldn't it be better to find a co-founder to take on some of the sales burden? (Either a pure business person or someone who could code as well?)

</comment></comment></comment><comment><USER7> If you have showdead off, someone said "ideas & market validation."

</comment><comment><USER8> Picking a name

<comment><USER9> Lol, that's not hard because it's hard, that's hard because you make it hard. These are 2 whole different problems. A name certainly can help to a startup (i.e. seo), but a startup is only a startup for it's rapid growth, and because Google searches are not undergoing rapid growth most of the time, this is not a startup problem but just an identity problem, which is a struggle but not a problem.</comment></comment>


Ask HN: Has anyone found employment through "Who wants to be hired" threads? - <AUTHOR> <comment><USER2> I got my current, first job through "who is hiring?" alone. The response rate was insanely high, I reckon >80% if I include the "thanks no thanks" answers. A few (obvious, but HN-oriented) tips:

      1 - don't spam
      2 - really, don't spam
      3 - put in some effort
      4 - keep it short

More often than not, you're given the chance to bypass the HR filter and get in touch directly with an engineer. This is key. Your default cover letter won't cut it, because engineers look for different things, so you want something tailor made every time. It takes some effort, but this _will_ pay off.

Make sure you understand what they do, what they want, and what you can offer. Make sure you (quickly) go through the latter. You probably have something to offer even though you don't fit the profile they had in mind.

Make sure you know who you're writing to, and craft your email accordingly. Google him, go through their HN submissions/GitHub/whatever, get a feeling for what they might like.

Oh, and try to be nice and genuine, at this stage is a lot about people skills :) Good luck!

</comment><comment><USER3> I got my new job on one of these threads. Even so, I'm disappointed by how many companies don't even reply to mails while they need "urgently" more people

</comment><comment><USER4> I landed my current job after being contacted from my "Who wants to be hired?" post. I'm not exactly a rockstar ninja, but I was pinged by multiple people: a pleasant surprise and a welcome change from the online job application robo- filter/recruiter dance. Absent a concrete lead, I plan to post there again next time I'm looking for work.

</comment><comment><USER5> I have found work as a remote developer (on contract not full-time) through this thread. The challenge is actually finding remote work. It would be nice if there was something that could make the search better.

</comment><comment><USER6> I hired a dev freelancer, working with him for few months now. I am very happy, I think he is as well :). However, I noticed that most of devs here ask for $50+/hour, which was a way above my budget, so it took me time to find somebody (good price/quality ratio). On the other hand I did not receive many applications actually. Anyway, it was much better experience for me than looking for somebody on upwork and getting 100 proposals from outsourcing firms from India.

</comment><comment><USER7> I applied for multiple remote jobs through HN "Who is hiring" thread, but barely got any replies. It must have been around 7 or 8 jobs. One company replied, for another one I did a coding challenge given from an automatic reply (but then never heard from them after) and all the others ignored me.

Honestly, I am really disappointed in how this is handled by them. It appears like they are looking for candidates urgently, but then do not even react. At least I would expect a rejection (with or without reasons given), but I got nothing instead. It was also not the case that I applied for jobs which did not fit my skill set or experience. In fact for most of them my experience would have been a very close fit.

</comment><comment><USER8> I found the two previous YC startups I worked for in Who's Hiring threads, so they've been a great resource for me. Usually you'll get in touch with an engineer/manager quickly and often you'll learn of available positions that may not be listed publicly. User manlio has some great suggestions for contacting the companies (personalize, but keep it short).

</comment><comment><USER9> I've interviewed a couple of candidates who mentioned seeing my job posting on HN. One candidate received an offer and the other did not.

</comment><comment><USER10> I tried the thread couple of times but got no leads.

</comment><comment><USER11> I know one person who was hired through a post I made on one of these threads.

</comment><comment><USER12> I've hired 3 developers through HN. All A+ people.

</comment><comment><USER13> I hired someone through this thread.

</comment><comment><USER14> I've hired 3 people via HN

<comment><USER15> via the "Who wants to be hired" threads, or another?

<comment><USER14> Via who's hiring

</comment></comment></comment><comment><USER16> I am in my current job thanks to a who is hiring thread!</comment>


Ask HN: Is it feasible to do high-frequency trading as an individual? - <AUTHOR> My stock broker offers a programming API. The trading fee is close to $10/order. With that price point, it seems pretty expensive to do high-frequency algo trading. Are there any much cheaper options for me to experiment with hi-freq trading? Or is it a dumb idea that I should give up? <comment><USER3> I'll share some experience a friend had with this stuff. I don't have the low- level details, but this should be enough to make an informed decision.

He was working on what he termed "high speed automated trading" -- basically all in this realm of picking pennies up in front of bulldozers.

He's a very smart and talented guy -- Harvard Physics/Comp. Sci double major, etc. So we're not talking about an amateur throwing around some code.

He spent about 6 months and over $50k setting up his system -- he had developed some algorithms to trade spreads between different securites (on the CBOE, the NYSE, and NASDAQ). He built a relationship with a clearing agent, a direct broker, etc. He got machines in colo facilities as close to the exchanges as possible (one data center in Chicago, one in Jersey City, etc.) SLAs on low-latency DS3 lines, etc. The whole nine yards.

I'd call it a "pro-sumer" level setup -- everything done by one guy, but done basically as well as a bigger firm would set it all up.

Here's what he discovered after about a week of trading: He didn't have even remotely a shot at competing. Like, not even close. If he had 10ms pings to the exchanges, someone else had 5ms. If he got down to 2ms, someone else who was physically at the exchange itself had 1ms. He got killed with commissions -- even if he did make a few $$ on some trades, it vanished with commissions.

Why? Because he was competing against guys who paid NO commissions. The broker-dealers and clearing companies themselves had internal automated trading setups. They had deeper relationships and deals that traded commissions for a cut of the profits, etc.

In other words, he figured out pretty quickly that this is not an algorithm game or speed game - it, like many things on Wall Street - is a 'who you know' game. No matter how smart, how fast, how sophisticated you are as an outsider, the likelihood is that someone on the inside has a similar trade idea and can do it faster and cheaper than you.

Now, the corollary to that: My friend is smart, but he also tends to give up too easily ;) Clearly if you've got an idea for a better/smarter/more innovative trade, then you'll make money on it. But that's a trade idea, not a speed advantage.

So just recognize that there's potential to make money, but "same idea, just faster" won't cut it.

<comment><USER4> Yeah, he learned the hard way that you can't expect to compete in the pros without pro level access. The thing is though that the pros are dealing with ms or seconds when he should have been looking at things outside their range like minutes or hours or possibly even days.

The currency market is even more cut throat (hey, insider trading is encouraged! :) ), but I have a friend who works with a single other guy managing about 10M leveraged out close to 100M. All they do is trade currency. On a typical day they make 1-2 trades for their clients and the rest of the time play golf and hang out. Pretty much the ideal job :)

They got started years ago while in grad school by writing an algo to analyze currencies. After showing it worked they rounded up a bit of funding and have gone on from there. Ever since then they have just honed and tweaked the algorithm and both make a good living off the commissions from working a couple hours/day.

</comment></comment><comment><USER5> Stay away from HFT, big players will eat your lunch. HFT isn't even a game of milliseconds anymore, it's a game of microseconds. You can still do well with algorithmic trading where speed of execution isn't an issue. Work on your strategy, test it on historical data, execute it manually, if it works then automate part or all of it.

<comment><USER6> Yup. NASDAQ will even tell you what the current latencies are for their coloc: <http://www.nasdaqtrader.com/trader.aspx?id=inet> Microseconds indeed.

Alternatively, you might consider going overseas if you aren't prepared to pay coloc fees and do custom FPGA or realtime work. Some of the exchanges, particularly in Asia (except Japan) still have clearing times measured in seconds.

<comment><USER7> Why doesn't government step in and quantise trading terms to be a whole day (or similar time)? It seems wrong to me that with potentially equal performance two traders can get different returns based on the microsecond difference in their latency between their server and the exchanges central server.

Does anyone still by the whole line about exchanges being their to create fluidity in the market.

It all seems a big scam, the more I learn about it the less I feel the highest returns go to those who perform the greatest scams fleecing off value created elsewhere (manufacturing, services, ..).

</comment></comment></comment><comment><USER8> I would ignore the "HFT" moniker and focus on the algorithmic part. HFT is a big-money game for companies who can afford to build a data center next to the exchange. But a longer-term strategy based on technical indicators can still do very well.

My main recommendation would be to take things slowly, browse through the COTS options in the field(which are plentiful), and make some of your own trades in order to learn and develop your strategy.

</comment><comment><USER9> It's not a dumb idea, but you certainly should give up. The high frequency game is one you will lose, because many of the large investment banks have relationships with the stock exchanges allowing them to get information faster - and respond to that information faster - than other traders.

See this NYT article (including the graphic) for more: <http://www.nytimes.com/2009/07/24/business/24trading.html>

<comment><USER10> That article is 85% hype. It reads like an editorial, not a news article. What exactly do you mean by "relationships with the stock exchanges"? If by that, you mean they pay the exchanges for colocation (which anyone can do), then yes, I would agree. If you mean the banks and exchanges are cronies and that the exchanges give the banks free perks because they're golf buddies, then that's wrong.

The edge you are talking about in terms of "previewing orders" seems to refer to flash orders. Those no longer exist (which I think is good), but I doubt they were a high source of revenue or edge, given their low volume relative to the rest of market activity.

<comment><USER11> There are several problems with this article; some errors (or simply incorrect terminology) and some things that are no longer true.

There is a difference between "algo" trading, also known as "program trading" and HFT. The algorithms in HFT kind of boil down to "get it there fast".

The thing that is no longer true is the flash orders (pointed out elsewhere in these comments) are no longer allowed. This is the reference to flash orders.

The trick to being a HFT is to be big enough and fast enough that the exchanges pay _you_ to trade. Thus, you don't necessarily have to make a profit on these trades. Then you are really a liquidity provider. Being an HFT is about size, speed and execution mostly, and ideas not so much. My advice is to not go after that market. It is likely that you are three or five orders of magnitude too small.

Other strategies are more interesting for the small guy. Maybe become a MFT (medium frequency trader), whatever that is.

</comment></comment></comment><comment><USER12> Since everyone has said no so far, I'll go ahead and say it's possible, but very difficult.

HFT algo commission is much lower than $10/trade. IBKR offers 0.008/sh, and it can get much lower if you trade in volume.

Like others said, it is a game of milliseconds. So you need to own a server near the exchanges in new york (i.e. <http://www.ubiquityservers.com/data- center/new-york.php>).

The best way to start learning is develop algos _not_ for HFT. Instead of milliseconds think about 15 min - daily holds. If you're trading under 25k, you're only allowed to make 3 intraday trades a week.

So find a broker that has a FIX api, buy some data for backtesting, code some stuff out using R/python, and forward test your strat using papertrading for about a month-- then put real money to work.

<comment><USER13> IB's unbundled commission structure is cheap, but I wouldn't recommend them for HFT. HFT, as defined by the industry, is basically very heavy on the order flow with the majority of those orders going un-executed. IB charges an insane cancel fee for orders that are direct routed. If you let IB route the order with their SMART algorithm then you have no idea where it might land. I'd speculate that IB charges such a crazy cancel fee because they don't want high volume limit order traders competing with their Timber Hill market making outfit.

Agree with everything else you said re: time frame, etc.

<comment><USER12> IBs cancellation fee on options is pretty absurd. For the solution needed there are much more specialized firms; however, starting off it's a pretty decent start.

</comment></comment></comment><comment><USER14> Someone on reddit a few months back was succesful at this:

"I used to work as a software engineer and started developing and trading automated strategies in my spare time in 2006. I went full time in 2007 and have been profitable every quarter since. AMAA"

[http://www.reddit.com/r/IAmA/comments/9s9d7/iama_100_automat...](http://www.reddit.com/r/IAmA/comments/9s9d7/iama_100_automated_independent_retail_trader_i/)

<comment><USER15> automated != high frequency

<comment><USER16> Bingo.

I know a few algorithmic position traders.... and it's got sweet nothing to do with high-frequency, or even day-trades usually. They have their algorithms, software they've developed to handle analysis, and get them in and out according to plan - I believe they research their target sector a bit, fire up their algorithm machines, and then manually execute (or at least approve their software to execute) the plan they had in place - and it's all position based. They know when they're getting out of any position, up or down - whether that happens the same day or in days or weeks, or months.

Lots of neat software, but not day-trading and not HFT.

</comment></comment></comment><comment><USER13> True high-frequency is very hard. Most of these guys got started in the 1999/2000 time frame and didn't have to deal with many of the start-up issues that new entrants face. For example, just consider the data you need to trade that quickly. Not only is the real-time feed expensive, but if you want to source the data from the execution venue then you have a lot of code to write. The amount of data is also quite large. For example, the US equities market executes approximately 45 million trades per day and there are about 700 million quotes per day, not including the non-top of book quote activity in the various ECNs. I collect between 2 and 4 GB of data per day, if you were to go direct to the execution venues you'd be looking at >50 GB per day, probably.

So, anyway, the "true" high-frequency game is very tough today because we're already 10+ years into it. The markets have changed and the edge has gotten smaller, but there is still plently for a lowly individual automated trader to scratch away at.

Instead of looking for millisecond opportunities, look for second or minute opportunities. Go where the big guys can't because there isn't enough capacity. Can you find an edge that, on average, keeps you in a trade 30 seconds, for example? There's still plenty of alpha left, just don't step onto their playground and expect to get onto the swing set.

A few practical notes:

* You need to look into unbundled or cost-plus commission structures. These fee structures charge a per share commission and pass through all fees and rebates from the executing venue. This is required to do any sort of size with reasonable cost.

* Most "retail" brokers are not sufficient for any sort of high-volume algorithmic trading. Interactive Brokers is barely ok if you are in any way interested in limit order trading because they have fairly large cancel fees for direct routed orders. If you're model doesn't rely heavily on strictly offering liquidity or you're ok with letting IB route your order then IB is ok and offers an unbundled commission structure. Lightspeed Trading and Lime Brokerage are two that cater to active individual and institutions.

* Data storage is a big deal. Effective storage of regular (evenly spaced) and irregular time series will require you to engineer something. There are commercial solutions, but you can't afford them. When you're dealing with high-volume intraday trading this is one of the first issues you'll face. How do you store, query, and manipulate data that includes 45 million new rows per day? The relational DBs fall apart pretty quickly and even if they didn't they won't give you the time series operations you need/want.

* Data feeds are expensive, but required. Look at DTN NxCore. It is a full market feed that will give you the best you can get w/o going direct to the exchange. Some brokers will give you access to raw exchange feeds, but you'll need to engineer feed handlers and a ticker plant for them. This is a non-trivial task, but not impossible. Once you've done that, you'll need to figure out how to get all that lovely data off your co-located server and back to your home base for analysis. Network engineering will be required because your broker doesn't want you pushing 10-20GB per day through their network connection, so you'll need a circuit from an on-premise carrier.

* The banks are players in HFT, but not the original or best. Most of the guys that started it are still independent. Look at GETCO, RGM Advisors, etc.

* Flash orders, what most folks in this thread are refering to when they say the exchange gives the HFT firm a first look, are no more. That edge existed, and I'm sure HFT took advantage, but no HFT firm was built on flash orders. When they started flash orders didn't exist.

It is possible to be a successful, independent, automated trader. It is even possible to do it on a purely intraday, high-volume basis. Don't get caught up in the hype of needing to be high-frequency or not.

\---

EDIT: The other thing I forgot to mention is that naked sponsored access is likely going away. This is a near-requirement for "true" HFT. Any future regulation won't affect any of the existing players because they're all grown up now and most have their own broker/dealers. Some form of sponsored access will likely still exist, but pre-trade risk checks will probably be required and will therefore still leave you're broker between you and the market.

<comment><USER17> (very off topic) _How do you store, query, and manipulate data that includes 45 million new rows per day?_

Perhaps one shouldn't? I've always been a bit fascinated by the analytical tools in brokerage software - with a pretty good understanding of DSP and an appreciation for the fact that asset prices are somewhat periodic, it's hard to overlook the fundamental similarities between stock graphs and audio waveforms. Once you start performing FFTs or wavelet transforms and get a 'feel' for dealing with signals, patterns become very seductive...possibly too seductive: <http://en.wikipedia.org/wiki/Pareidolia> and <http://en.wikipedia.org/wiki/Tetris_effect>

Might there be another approach? You wouldn't prepare to go to the store by reviewing and analyzing the 1287 individual footsteps of your previous trip, or try to predict the content of a HN thread by textual analysis of all previous threads. Do we do so at a subconscious level, then? Not really - <USER2> rather, our subconscious tends to forget about things as soon as they cease to be important, which in the case of things like walking is a period of seconds or less. Processing large volumes of data is computationally expensive, but it turns out that simple rules can yield results that are both complex and useful, as in flocking and swarming behavior: see <http://en.wikipedia.org/wiki/Boids> and <http://en.wikipedia.org/wiki/Swarm_Intelligence>, plus everything from the wisdom of crowds to nonlinear dynamic systems (aka chaotic ones) like Newton's basin or the logistic equation.

I feel there are two other fundamental problems with the massive dataset + analysis approach. One is that you're not working in a closed system, and there's no sensible way to quantify unexpected events. 'Bigcorp CEO in Sex Scandal!' might cause the price of Bigcorp to tank if it's a major distraction or their largest customer base is among rural conservatives. If Bigcorp makes racing cars, it might just be good publicity! Now you can do some kinds of interesting posthoc analysis (eg for news stories that contain a stock symbol, measure the correlation between # of textually similar stories and stock volume/prices using a distributed windowing function) but we're a long way from having a browser plugin that trades based on the contents of your RSS feed.

Another problem is that of feedback. As you've discussed so ably above, people who spot an arbitrage opportunity will mine the hell out of it. And as we all know, traders are extremely subject to herding behavior even though all training suggests they do otherwise. Sure there are systematic contrarians, but I bet that if you just want to do academic analysis you could find a contrarian coefficient and quantify its damping effect on price or volume movements.

So rather than crunching vast quantities of stored data, I wonder if it might be better to treat price movements not as absolutes which you hope will reach a particular ceiling or floor, but as differential vector data with a short half-life. So far AI and modeling approaches seem to have focused on prediction (surprise) and don't perform especially well. I think it would be more interesting to map correlation variations for as large a number of nodes (listed securities) as possible - think how we intuitively appreciate the dynamics of a school of fish when watching a nature documentary, without performing any detailed analysis of individual fish trajectories.

Of course this still involves processing a lot of data, but storing it is less important because are only seeking to become more familiar with high-level behaviors inside that system. There's more to fishing than running trawlers!

<comment><USER13> Good thoughts, and I don't particularly disagree. Regardless of any derivative you might obtain from the data, most folks want to retain high-fidelity historical data for two reasons:

(a) Future analysis techniques are unknown. Today you might be using method X, but tomorrow you might want to try method Y which calls for an entirely different massaging of the raw data.

(b) Backtesting and replay. Simulations and replays of previous trading events are valuable not only for testing a model but also testing the particulars of new "infrastructure" code.

Both require high-fidelity source data. This stuff is so hard to come by and costs so much money that most people want to be safe and save it forever.

To your point on analysis: it is rare that one would directly analyze the source data itself. You'll almost always want to transform the data into something more manageable for model development. The most crude form of this is idea of "bars". Instead of looking at tick data, traders tried to reduce the noise by looking at arbitrary aggregations of that data: 1 minute, 1 hour, 1 day, etc. Technical analysis using moving averages and other indicators are also examples.

<comment><USER17> Seems like hosting a large hifi dataset in the cloud (eg rolling last 5 years) and charging a small fee to crawl it might be a good opportunity. Or maybe there's no margin in it when people are prepared to pay $$$ as you describe even if they're reinventing the wheel in the process.

Not that I'm a mathematical or economic genius of any kind, but I continue to be surprised at how primitive financial analytics seem. When people do find something interesting (eg Li's Gaussian Copula) they almost invariably make a fetish out of it and hurl themselves off the nearest cliff shortly afterwards. Economics faculties are as much to blame as anyone, I feel.

<comment><USER11> It is likely that you can't share that tick data--there are redistribution restrictions.

<comment><USER7> Stock exchange data is closed? I find that rather strange.

<comment><USER13> It's not closed, but to purchase re-distribution rights is very expensive.

</comment></comment></comment></comment></comment></comment></comment><comment><USER18> Cheaper? How. 10/order makes no sense at all if you are ordering 10-20 shares at a time. It makes a lot of sense if your orders are 100,000-200,000 (or more) shares at a time. Individual traders (most often) only do the 10-20 shares or so... Check to see if your broker has limits on the number of shares/order.

High frequency algo trading, as presently committed to by the big banks, relies (as others have noted) on advanced notification (if only, at times, milliseconds in advance...) which, as an individual, you probably won't get. But that just means you can't make use of the same algorithms as the banks. You'll want to derive your own algorithms to exploit some specific pattern(s) that are different from those that rely on advanced word. It's possible, but unless you're already in possession of some wealth, unlikely that you'll be able to design, implement and tweak your algorithm to profitability in anything like a year or so. I certainly wouldn't try it as anything less than a full time occupation... certainly not something that can be done as an 'experiment'.

</comment><comment><USER19> The only person likely to get rich off that is the broker...

<comment><USER20> Sadly "that" likely describes far more than HFT. I've been wondering for a while if performance was inversely correlated with portfolio turnover in actively managed portfolios.

Without having proved it out, I am almost certain it is.

<comment><USER20> And as I think about it, the reason for that might actually be that portfolio turnover mitigates concentration risk if it is not excessive.

</comment></comment></comment><comment><USER21> No.

Your ping time will be > 20ms. factor in a bit of latency in the data feed and call it 30ms. Nyquist says you'll get aliasing unless you sample 2xfreq. So The highest frequency you can possibly trade is 60ms. Not at all high frequency.

And I really doubt you'll get a 20ms ping time. I get 100ms to my broker. Can you do mid-frequency trading? Absolutely. But you don't have the money or access to resources required for hifi trading.

Also, $10/trade is VERY high. I'm using interactive brokers, which is $2/side+some costs which are small enough I don't bother accounting for them.

</comment><comment><USER22> What about low frequency algorithmic trading? As in you run a program that is looking to make money holding a position for hours to days so the exact buy price isn't as big a deal. Or does it become to much of a game of chance then?

<comment><USER23> Trouble is that you still need to guess what kind of market you are in. Such systems often only work in some trending markets and you can easily loose what you have gained when market goes against you.

</comment></comment><comment><USER24> You should give up ... reason is that HFT costs for the big houses are just a fraction of what you are paying, like less than a penny per trade. You could not hope to gain back in margin, what you lose in transaction costs.

</comment><comment><USER25> High Frequency trading, is really meant for people or companies that have their servers in the same network as the exchange they are HF'ing on. In fact, true HF'ers buy and sell in fractions of a second, some lasting seconds, or minutes.

I've researched this, and tried doing the same, but, in the end, trade fee's, and commissions kill the idea dead. In fact, HF Trading falls under Day Trading, which required that you must have the legal minimum $25,000 in equity on hand to day trade... that is the main thing that killed it for me... read for yourself: <http://en.wikipedia.org/wiki/Day_trading>

If you'd like to try it out before you trade live (here comes the shameless plug), you can use the trade simulation I made (buy/sell/sell short) and set your trade fee's and commissions totally free at <https://algxchange.com>

</comment><comment><USER26> <http://news.ycombinator.com/item?id=1431834>

</comment><comment><USER27> "In other words, he figured out pretty quickly that this is not an algorithm game or speed game - it, like many things on Wall Street - is a 'who you know' game. No matter how smart, how fast, how sophisticated you are as an outsider, the likelihood is that someone on the inside has a similar trade idea and can do it faster and cheaper than you."

For every wall st question posted to HN this is the answer. It's a lot of money in somebody else's backyard. The game's played in that backyard are always rigged against the outsider.

</comment><comment><USER11> Check out Interactive Brokers at <http://www.interactivebrokers.com/>. Their brokerage fees are substantially lower than that.

</comment><comment><USER28> As others have said, I think focusing on HFT is a _bad_ idea. You are going to be in competition with other players in the market. What are your weaknesses compared to them:

1) You are alone; you are competing with teams mixing 3-4 math/physics ph.d.'s and 3-4 programmers that might implement their algos on the latest GPUs (and this is _very_ time consuming).

2) You have no experience. You are competing with _very_ smart people that have been playing this game for years.

3) You (probably) have little money. So you want to minimize cost of historical data acquisition, data storage, data analysis, hardware, collocation …

IMH, these points pretty much rule out HF trading.

You also have some advantages compared to the competition. One of them is that you have little money, so you can invest in assets that are illiquid to someone that wants to move a lot of cash.

I think it is possible to trade as an individual; hard but possible. And if you are successful at some non-crazy frequency -- a few days, a few hours, a few minutes -- then, maybe, maybe have a look at HF.

And another thing, if you can, go shopping for a broker with lower fees. $10/trade? It looks as if you did not do basic homework -- but mabe you live in a country where that's the cheapest you can get.

</comment><comment><USER29> As already said both here and in previous threads: HFT is for _big_ players; requires:

\- hosting on exchanges premises to cut roundtrip delay (µS speaking). Also, very often, you'll be throttled depending on how much you pay. For entry fees, you'll be limited to ridiculous rate such as 20 msgs/sec.

\- man years of development. Basically, when starting from scratch, we develop Direct Market Access gateways (i.e, custom/proprietary access to exchanges) in 3 to 5 man-months (using an in house framework). And they sit on top of other products that have dedicated teams working fulltime for years.

\- upkeep: exchanges update their systems once/twice a year. Migrations take somewhere from a few hours to weeks, or a from scratch when they rewrite their complete API. If you can't keep up with the updates, you won't be able to trade.

And here, we're only speaking about trading. As highlighted, you also need market data, both retrieval and processing. Then and only then you'll be able to seriously start trading. (and then you'll want to do some back office stuff)

> The trading fee is close to $10/order

Deal breaker, especially for HFT.

</comment><comment><USER30> HFT is a game of speed and low fees. Not a single individuals broker can offer substantial speed (microseconds count) and fees (cents count). It is a game for prime brokers and big institutionals. Moreover it is true that some exchanges (like NYSE) offer lower latencies for a serious monthly fee (not the one an individual can afford). Thus I don't think one person can solve all these complexities, however this topic is a good startup field with lots of ineffeciencies and unsolved problems.

Algorithmic trading is an option, though needs careful research on topics of broker setup (InteractiveBrokers should be a good starting point, ThinkOrSwim is another good one, both has rather tolerant programming APIs) and software for time series analysis and trading (among the most popular are Marketcetera and WealthLab + lots of libraries like Incanter and Weka). On some of these topics <http://elitetrader.com> forum should be helpful.

</comment><comment><USER31> Successful HFT desks are either large broker-dealers, or sophisticated hedge funds, both of which are well-capitalized, have expensive infrastructure, great location (close to exchanges to minimize lag), ultra-low trading commissions etc. Furthermore, only the hedge funds are pure prop groups. Most the broker-dealer desks act as market makers and aggregators for internal flows (almost free money).

So it's going to be very hard for you to compete with them, even if you come up with better algorithms.

I recommend looking at mid-frequency or low-frequency algorithms, which will offset the impact of your higher trading commissions and don't get affected much by infrastructure and location issues.

And yes, $10 per order is too much unless you talking really big money. Check out IB, FXCM etc.

</comment><comment><USER32> As an individual it is unlikely. Your best bet would be to develop an algorithm with massive amounts of recent historical data that shows you could hypothetically be profitable. Shop that to trading firms or angel investors and use their capital to get a direct feed. You probably won't be able to do this to a major exchange, but there are lots of other options. If you find a smaller market you can also potentially get a market maker agreement. This will mean that you have to have certain positions open at all times, but you can place any orders you want in addition to those, and all of them will have $0 fees.

All that said, I would suggest you stick with vanilla algo trading to start, and leave HFT to the big boys (until you are one).

</comment><comment><USER33> your internet-based API is nowhere near fast enough to compete with legit HFT firms. low to medium frequency with longer holding periods, sure, but real HFT via your broker's API? not gonna happen.

</comment><comment><USER34> If you're not connecting directly to the exchanges, no.

</comment><comment><USER35> I like lrm242's comments. I started my own high freq algo firm back in 2007 and crushed it for awhile. In the end though, the governing dynamics of the marketplace change and can change very rapidly, so any machine learning or neural networking you do perform can become obsolete fairly quickly. Unless you've developed HAL you're probably going to have a rough go of it alone...hope this helps!

</comment><comment><USER36> High frequency low latency trading is an fascinating area. If you do decide to make a go of it and have the algorithm, the collocation site, the relationships, and the money, you might want to work with Maxeler Technologies, <http://www.maxeler.com>, which has the acceleration technology that is need to make it happen.

</comment><comment><USER37> There is a talk being given by Andrew Sheppard on O'Reilly right now talking about using GPU programming to speed up number crunching, specifically in the financial arena.

<https://oreilly.connectsolutions.com/gpufinance/event/>

I believe the talk will be recorded and made available for later viewing.

</comment><comment><USER38> A little OT: People here are always talking about trading stocks, anyone dabble in forex?

<comment><USER39> A caveat emptor on FX trading worth reading: <http://tickerforum.org/akcs- www?post=23331>

<comment><USER38> Yeah, there are lots of bucket shops.

The claims about costs are stated in a weird way. The absolute cost of the trade doesn't change based on your leverage, just the cost as percentage of the margin requirement. I guess they're just trying to say you can blow up your account faster with high leverage.

You can also find brokers that don't do roll over and will even pay you interest on open positions for certain pairs.

</comment></comment></comment><comment><USER40> I can't even get real time (meaning not delayed by 15 minutes) stock quotes for my startup here in Brazil.

<comment><USER16> Can't sign up for an IB account?

</comment></comment><comment><USER41> etrade is about to come out with an API and programmers could use it to do some really cool HF trading.</comment>


Has Patent, Will Sue: An Alert to Corporate America - <AUTHOR> http://www.nytimes.com/2013/07/14/business/has-patent-will-sue-an-alert-to-corporate-america.html?hpw&_r=0

<comment><USER2> "Once you go thug, though, you can't unthug," - true dat.</comment>


Comparing electricity to a gallon of gasoline - <AUTHOR> http://ideas.4brad.com/comparing-electricity-gallon-gasoline <comment><USER2> "Lots more research is being done on calculating "grams of CO2 (or equivalent) per mile" as a way to compare electricity and gasoline. If global warming is your big issue, this is the one that many people look at. This also is highly locally variable, with very high numbers in the coal states and nice numbers in the hydro and nuclear powered areas."

With any luck we'll see decisions about energy that are much more locally relevant. If we can get our energy "tagged" with its source content (nuclear, coal, etc), we can make more informed decisions. I, personally, don't think shifting energy needs to coal is that much of a gain -- at least not enough to make me want to go get an electric car.</comment>