Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
coaxmetal
Oct 21, 2010

I flamed me own dad

ahhh spiders posted:

the function call operator. calling a function is an operation on the function

I know I addressed that, jeez.


Rufo what's CSP?

Adbot
ADBOT LOVES YOU

Gazpacho
Jun 18, 2004

by Fluffdaddy
Slippery Tilde
csp is basically threads/tasks with value-only messaging i.e. a task can send messages to other tasks but can't reach in afterward and change their contents, see also early unix and web workers and soa

Shaggar
Apr 26, 2006

tef
May 30, 2004

-> some l-system crap ->

Shaggar posted:

if ur writing ur own http request parser ur beyond all help

it's me, i am beyond all help

tef
May 30, 2004

-> some l-system crap ->

Internaut! posted:

just pointing out the user experience of processes crashing is less than optimal

btw if you fancy learning things, go and read joe armstrong's thesis, or jim gray's "why do computers stop and what can be done about it" to learn more about process supervision or crash only software.

tef
May 30, 2004

-> some l-system crap ->

JawnV6 posted:

hey tef i tried searching but what was that joke you RTed about 1980 called, well, actually 1980 passed us a pointer...

I have no idea I rt things that make me go heh all the time.

tef
May 30, 2004

-> some l-system crap ->

Rufo posted:

csp owns and tony hoare owns

Sneaking Mission
Nov 11, 2008

i enjoy tweeting and retweeting

Rufus Ping
Dec 27, 2006





I'm a Friend of Rodney Nano

Ronald Raiden posted:

Rufo what's CSP?

a formal language for describing systems of communicating processes. you can use it to program things (occam) and you can use it to specify models which you can test other things against (fdr2) and you can use it as a specification language from which other things can be generated (tangram). its got fingers in a ton of different compsci pies.

this is a good introductory book http://web.comlab.ox.ac.uk/oucl/work/bill.roscoe/publications/68b.ps

tef
May 30, 2004

-> some l-system crap ->
your mom uses hoare semantics

Jonnty
Aug 2, 2007

The enemy has become a flaming star!

tef posted:

your mom uses hoare semantics

tef
May 30, 2004

-> some l-system crap ->
before you empty quote me I basically lifted it from this http://www.monzy.com/intro/drama_lyrics.html

Toady
Jan 12, 2009

code:
DO ,1 <- #13
PLEASE DO ,1 SUB #1 <- #238
DO ,1 SUB #2 <- #108
DO ,1 SUB #3 <- #112
DO ,1 SUB #4 <- #0
DO ,1 SUB #5 <- #64
DO ,1 SUB #6 <- #194
DO ,1 SUB #7 <- #48
PLEASE DO ,1 SUB #8 <- #22
DO ,1 SUB #9 <- #248
DO ,1 SUB #10 <- #168
DO ,1 SUB #11 <- #24
DO ,1 SUB #12 <- #16
DO ,1 SUB #13 <- #162
PLEASE READ OUT ,1
PLEASE GIVE UP

quote:

INTERCAL has many other features designed to make it even more aesthetically unpleasing to the programmer: it uses statements such as "READ OUT", "IGNORE", "FORGET", and modifiers such as "PLEASE". This last keyword provides two reasons for the program's rejection by the compiler: if "PLEASE" does not appear often enough, the program is considered insufficiently polite, and the error message says this; if too often, the program could be rejected as excessively polite. Although this feature existed in the original INTERCAL compiler, it was undocumented.

skeevy achievements
Feb 25, 2008

by merry exmarx

tef posted:

btw if you fancy learning things, go and read joe armstrong's thesis, or jim gray's "why do computers stop and what can be done about it" to learn more about process supervision or crash only software.

interesting to see armstrong's approach to erlang and his hierarchical breakdown, our architecture has a similar breakdown in that macro tasks are defined in process groups, smaller tasks in processes, smaller tasks in threads, and everything is fail fast and everything is supervised i.e. threads have their own supervisor in process, processes have their own supervisor in the process group, process groups have supervisors running locally and remotely, all focused on being as isolated from each other as possible - the concurrency elements would have been an order of magnitude easier to write in erlang of course, but who knows how they'd perform especially under heavy contention (markets making GBS threads themselves) which is where we need QoS guarantees the most

gray's paper is pretty well known in my industry, lots of tandem deployments out there and I'm pretty sure his bigass book on transaction management systems is floating around our library, and the only safety method in the paper we don't make use of is the tandem processing for obvious reasons

all told good links voted 5

edit: good timing, after going missing at sea in 2007 jim was pronounced legally dead just 2 weeks ago

skeevy achievements fucked around with this message at 02:32 on May 30, 2012

Wheany
Mar 17, 2006

Spinyahahahahahahahahahahahaha!

Doctor Rope

Panic! At The cisco posted:

i enjoy tweeting and retweeting

Retweeting is like emptyquoting

rotor
Jun 11, 2001

classic case of pineapple derangement syndrome
man shaggar just been ownin fools left & right jesus

Nomnom Cookie
Aug 30, 2009



Ridgely_Fan posted:

if your changing what your comparing, you will need to name the new comparator something else, and youll have to find and replace anyway.

shaggargument is specious

in java land u just wave your magic wand and say "IDE, i command you to change the name of yon identifier" and lo, it is done. in comments, build files, the project wiki, everywhere

homercles
Feb 14, 2010

:kiddo:

Nomnom Cookie posted:

the project wiki


anyhow write up your CheekSizeButtComparatorFactoryFactoryFacadeAdapterProxy any be done with it

Nomnom Cookie
Aug 30, 2009



if you're coding java and type more than 3 characters without invoking some kind of completion you're doing it horribly wrong

Opinion Haver
Apr 9, 2007

Nomnom Cookie
Aug 30, 2009



that's about 20 keystrokes in idea

Opinion Haver
Apr 9, 2007

or you could just write

code:
do b <- one >>= two
   c <- three b
   four b c

Nomnom Cookie
Aug 30, 2009



or i could write
code:
        <dependency>
            <groupId>com.bitch.yospos</groupId>
            <artifactId>shitpost</artifactId>
            <version>1.4</version>
        </dependency>

and then

    import com.bitch.yospos.shitpost.Shitpost;

    Shitpost.post(Shitpost.Shittiness.REALLY_SHITTY_WORSE_THAN_YAOI_PROPHET);
and go home and get drunk on wine coolers while you're still getting type errors

homercles
Feb 14, 2010

taking line noise and running it through strings doesn't make it any better

EMILY BLUNTS
Jan 1, 2005

Nomnom Cookie posted:

and go home and get drunk on wine coolers

gross

tef
May 30, 2004

-> some l-system crap ->

Internaut! posted:

interesting to see armstrong's approach to erlang and his hierarchical breakdown,

it seems i've sent coals to newcastle :shobon: It is good to see erlang style decomposition outside of erlang. (honestly I've never got the chance to use erlang in production, so I've had to make do with re-inventing it)

quote:

the concurrency elements would have been an order of magnitude easier to write in erlang of course,

the thing that isn't really hammered within the thesis (iirc) is that you write state-machines as processes in erlang, by the magic that is tail recursion. I would assume you've experienced something like this in clojure.

really, the only thing I recall about the thesis is joe armstrong apologising for the typesetting.

quote:

but who knows how they'd perform especially under heavy contention (markets making GBS threads themselves) which is where we need QoS guarantees the most

I think mononcqc can vouch better for realtime/qos guarantees in erlang better than I can. (aside: I am curious as to what you make of LMAX's disruptor)

I don't think erlang is necessarily the right tool here, but you've obviously gone down a similar path - how do your processes communicate in your current system? Channels? Mailboxes?


quote:

gray's paper is pretty well known in my industry, lots of tandem deployments out there and I'm pretty sure his bigass book on transaction management systems is floating around our library,

:swoon: I have this book. There is a number of chapters which elaborate on some of the "Why do computers stop", it might be worth poking at.

there are a whole bunch of tandem papers archived at HP too: http://www.hpl.hp.com/techreports/tandem/


quote:

and the only safety method in the paper we don't make use of is the tandem processing for obvious reasons

you're cheapasses :q: (I kid, somewhat)

quote:

all told good links voted 5

I should have put the links in, but it was late.


going back a bit

Internaut! posted:

as a learning exercise I just rewrote it in ~430 lines of much more readable Clojure using nothing but pure functions, which (assuming I interpreted the switching rules correctly) guarantees it's immune from concurrency problems, which account for the bulk of the 700+ unit tests for the core

:stare:

one of the arguments put forward by grey et al (in transaction processing), is that it is /hard/ to get concurrency right for paired processes - you can do it by hand, you can do with with checkpointing, or you can do it with transactions.

it makes a very strong argument for transactions as the building block for robust software.

Jonny 290
May 5, 2005



[ASK] me about OS/2 Warp
that doesn't look like vacationposting to me :colbert:

tef
May 30, 2004

-> some l-system crap ->
although really, i've never had to work in anything close to real time or trading style systems, so I'm likely full of poop.

the nearest I got was working in a cloud* company that pretended it could make a system to handle transactions 'scalably', built around the idea of migration of state.

the problem is, when you introduce robustness, or redundancy, you have multiple copies of the state. migrations don't make sense when you're essentially adding or removing nodes from a group.


i lie, that wasn't the problem. it was slow, and it didn't do anything.

tef
May 30, 2004

-> some l-system crap ->

Jonny 290 posted:

that doesn't look like vacationposting to me :colbert:

I haven't got out of bed yet.

Jonny 290
May 5, 2005



[ASK] me about OS/2 Warp
heh

All Hat
Jul 11, 2008

He that is without int among you, let him first cast a long


Java code:
Unreported exception java.balls.FallsOffCliffException; must be caught or declared to be thrown

Jonny 290
May 5, 2005



[ASK] me about OS/2 Warp
cPerls: ugh they are wanting me to rework these scripts so that they pop a ticket for each of X devices down instead of a single ticket that says "you got a bunch of devices down) but there's no granularity at that device level so once we pop tickets with this, we'll never be able to address the tickets to auto close the correct ones if they come back online

however this solves a nice 'soft issue' where we stop tickets from auto-closing and then manually close them for credit. this is SOP

Zombywuf
Mar 29, 2008

yaoi prophet posted:

or you could just write

code:
do b <- one >>= two
   c <- three b
   four b c

Bash code:
one | two | tee /tmp/b | three > /tmp/c
four /tmp/b /tmp/c
Why does Haskell have to make everything so hard?

TOO SCSI FOR MY CAT
Oct 12, 2008

this is what happens when you take UI design away from engineers and give it to a bunch of hipster art student "designers"
yes lets have everything go through loving disk io

zombywuf, you're even dumber in yospos then you are in coc. you're like tiny bug child, except even he can get by in at least one language.

Zombywuf
Mar 29, 2008

http://www.boost.org/doc/libs/1_46_1/libs/iostreams/doc/guide/pipelines.html

I know you have this really disturbing relationship with Haskell Janin, but the comment was about syntax and expressiveness, not data storage. Take a deep breath, relax, and consider that no-one was suggesting the replacement of Haskell with Bash.

Shaggar
Apr 26, 2006
no one should use bash or haskell

trex eaterofcadrs
Jun 17, 2005
My lack of understanding is only exceeded by my lack of concern.

Shaggar posted:

no one should use bash or haskell

the same could be said of all programming languages

0xB16B00B5
Aug 24, 2006

by Y Kant Ozma Post
lol @ coding anything. either your idea is poo poo or someone will have something for you already on the app store

Emacs Headroom
Aug 2, 2003
lol @ using computers

im posting this via smoke signal from my campfire in montana

Adbot
ADBOT LOVES YOU

skeevy achievements
Feb 25, 2008

by merry exmarx

tef posted:

I think mononcqc can vouch better for realtime/qos guarantees in erlang better than I can. (aside: I am curious as to what you make of LMAX's disruptor)

lmax seems like a solution to a problem no one has - retail traders don't care about latency and even if they did they're probably looking at ~50ms to the lmax server minimum, so sub-microsecond order processing times don't really matter

meanwhile institutional systems need to do a lot more than just take orders, an efficient desk is constantly bumping up against constraints for risk, capital allocation, trader/trade priority etc which introduces contention and latency in communicating with other systems, in the lmax jargon the business processor quickly becomes the bottleneck erasing the benefits of their disruptor architecture

finally the real hft guys can already process far faster than this, so at least in my industry I don't really see the point of lmax but I'm sure there's some emerging niche (retail prop hft?) where it could be useful

tef posted:

I don't think erlang is necessarily the right tool here, but you've obviously gone down a similar path - how do your processes communicate in your current system? Channels? Mailboxes?

we use a number of posix ipc mechanisms including semaphores, named pipes and queues, which was an extremely efficient way to implement the system originally or so we're told

unfortunately the pace of change in our industry indicates that a more flexible approach is preferable at this point so we're currently evaluating new ways to deliver concurrency with a lot more software flexibility, including new fangled (for us) approaches like pure functions, pi calculus, csp, higher level concurrency primitives like actors etc

tef posted:

you're cheapasses :q: (I kid, somewhat)

eh no but once you've chosen a c/linux architecture, you're looking at either substantial compiler and/or kernel mods to recreate tandem-style dual processing and it's just not worth it for us, hot swappable commodity hardware and stateless clusters mean the uptime of individual processes isn't critical even if we couldn't reboot every 12 hours or so which we can

likely the reason we never chose tandem hardware itself (this was before my time) is that it would be like trying to make a pickup truck perform like a corvette - it's possible, but it's probably going to be easier and cheaper to just buy a corvette in the first place, especially if you don't need the towing capacity

:iiaca:

tef posted:

one of the arguments put forward by grey et al (in transaction processing), is that it is /hard/ to get concurrency right for paired processes - you can do it by hand, you can do with with checkpointing, or you can do it with transactions.

it makes a very strong argument for transactions as the building block for robust software.

yeah it seems simple but I'm seeing stm performance degrade in unexpected and delightful ways in some of my clojure tests

at this point that could be equal parts clojure and equal parts ignorance on my part but ultimately there's no free lunch; if you implement transactions using the finest grained operating system primitives available, you will be able to tune, control and predict your transaction system's performance under various loads far better than you'll be able to by just wrapping code blocks in dosync or whatever, even if you have to pay for that control and predictability in developer blood

tef posted:

although really, i've never had to work in anything close to real time or trading style systems, so I'm likely full of poop.

don't feel bad, read noted web guru martin fowler's review of lmax for profound insights from someone who has likely never been anywhere near a realtime system either

really martin in memory processes work faster than ones requiring an an oo/relational->disk step do they, fascinating

skeevy achievements fucked around with this message at 16:22 on May 30, 2012

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply