Hacker News new | past | comments | ask | show | jobs | submit login

The culture shock you mention was very real. I joined in 2010 (when Athena was 3 years old) and left 8 years later in 2018.

I remember my first few months unlearning normal Python and figuring out how to build the 'pixie graph', a lazily-evaluated Python DAG suited for calculating financial instruments. It took a while to get your head around this, but when you did it was a very powerful and productive way to building trading and risk management applications.

To get some sense in how this worked, here are two public projects on github with good introductions:

* https://github.com/timkpaine/tributary

* https://github.com/janushendersonassetallocation/loman




Sounds like a descendant of Goldman Sachs‘s SecDB/Slang with automatic dependency graph building. Did it have purple children (nodes whose value influences the graph structure) and twiddle scopes (modified copies of subtrees)? :-)


Just to add a bit of history, SecDB itself was an acquisition from J Aron, a commodity trading shop in the early 90s.

It was ubiquitous in GS by the mid-2000s, and was rather instrumental to GS navigating the crisis in 2008.

Being able to accurately and quickly compute risks across the entire firm's books, rather than manually merging across separate systems was key advantage, which encouraged JP, Citi and BofA to build a SecDB clone themselves.

https://www.goldmansachs.com/our-firm/history/moments/1993-s...


Yes indeed. Quite a few of Athena's early developers were from GS.

I've not heard the term "twiddle scopes" before; in Athena it is "tweaking".


Come to think of it, it might have been a “diddle scope” (I’m not a native speaker).

For finance applications (risk) the whole concept works quite well, doesn’t it - combining the natural advantages of code and Excel.


It was indeed "diddle," not "twiddle." At BAML, it's a "tweak." Beacon Platform is another implementation by the same team (but with support for the public cloud, and many more advanced features, I believe, including tighter web integration). I think it uses the terminology "bind."

[Disclosure: I was part of the Quartz Core team in 2011/2012.]


I was positively surprised that Slang was actually quite usable. I had expected much worse.

I suspect the Common Lisp influence was beneficial.

The weirdest thing, language-wise, that I noticed was scoping. It's neither dynamic nor static scoping, but weird scoping. (But there are work-around to get something like static scoping.)

Outside of the language, the whole CVS-based version control and review process was weird. But understandable as a product of the late 1990s, when review-before-going-into-permanent-history must have been way ahead of its time.


Slang was OK as a language. The SecDB/Slang ecosystem was years ahead of its time and all credit to its inventors and maintainers, but a monorepo full of decades of critical code from thousands of developers still gives me palpitations.


> The weirdest thing, language-wise, that I noticed was scoping.

Not the spaces in variable names?


Those annoyed me immensely. I can feel my heart rate go up 10 BPM just thinking about it. I guess it was meant to make scripts more readable to minimally-techy people, but actually just made it harder to parse.


No, actually not. I found that quite refreshing and occasionally useful.

But I was used to different and exotic conventions from the obscure languages I played with over the years.


Loman author here. Thank you very much for the mention. Amazed that I never heard of Athena or pixie graphs. Our intention with Loman was to create a library scoped for a single process - we looked at the possibility of creating a system responsible for executing much larger graphs on a real-time ongoing basis, but it felt like a larger project than we'd be able to execute well. It sounds like Athena was that, and it worked well, subject to being a culture shock for people coming into it?


A similar library from another asset manager - https://github.com/man-group/mdf. Although MDF seemed to work at the level of timeseries instead of scalar values.


I really like this video for explaining the DAG - https://www.youtube.com/watch?v=lTOP_shhVBQ


Man AHL also had a version that worked on top of nodes representing timeseries: https://github.com/man-group/mdf


Hi Steve, thanks for your talk and for the links. Are those repos pixie dependencies? Or are you saying that pixie works like those repos?


They are "toy" projects illustrative of the general concepts. ("toy" as in smaller in scope; one of the two is by a former colleague).

JPM's actual pixie code is proprietary, extremely performant after 12 years of pushing into bigger and bigger scale problems, and is definitely not on GitHub!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: