text:
vbUserbar tool - allows you to make userbars for your signature
Casino - you can play casino type games there
Word Scramble - duh, you unscramble words
SA Trivia - trivia questions via a 3rd party system
SA Toolbar - install a toolbar that give you quick access to SA
vbRadio - listen to radio stations across the country
Sudoku - if you don't know what it is, you probably don't use it.
We'll continue to leave this poll open until 8/11 or so. Any comments, suggestions, just let us know here. Initial results indicate that the 2nd tier features are not a very hot item on the SA..which is totally fine, after all they aren't the most popular things in the world when you're talking about a football fan site.
The vbuserbar tool and the Casino will most likely stick around, those are pretty decent things to have handy for people to use. The others, we'll see how the rest of the voting pans out and go from there. Thanks all for your input, we appreciate it...keep it coming!
Find anything out about Sudoku?
No but it's on my to do list for this week yet. I've been doing some updates to the site the last couple days and checking into that is on it. I'll let you know what I find out asap...
Is there an SA app for iPad and iPhone?
"Like a midget at a urinal, I knew I had to be on my toes." - Lt. Frank Drevin
You can use SA on Tapatalk, just an FYI for you all smartphone users.
Thanks to everyone for checking out this poll, since we only wanted responses for those that actually use the extra features listed in the poll, we got some good feedback on which ones are used enough to keep around and those that aren't as popular.
There are currently 1 users browsing this thread. (0 members and 1 guests)


text:
Erik Meijer on LINQ
Recorded at:
- Share
- |
Read later
Reading List
Bio Erik Meijer is the creator of LINQ at MS, where he works together with the Microsoft Visual C# and the Microsoft Visual Basic language design teams on data integration in programming languages. Erik has participated in designing several languages: Haskell98, Mondrian, X#, Cω, C#, and Visual Basic.
Sponsored Content
QCon is a conference that is organized by the community, for the community.The result is a high quality conference experience where a tremendous amount of attention and investment has gone into having the best content on the most important topics presented by the leaders in our community.QCon is designed with the technical depth and enterprise focus of interest to technical team leads, architects, and project managers.
1. I'm Sadek Drobi, I'm here at QCon San Francisco, with Erik Meijer. Erik is the father of LINQ and he is known as "the Banana guy" for his huge contribution to functional programming and research. Erik, for those who still don't know you, can you introduce yourself and tell us what you've been working on?
I think you are giving a little bit too much praise. There are a lot of things that are not designed or built by one person, but by the whole team. In a previous life I was called "the Banana man" because I did some kind of crazy things with functional programming, but what I'm trying to do these days is to make life of programmers easier in general. If you are programming, there is a lot of noise that you have to deal with and that's what I'm trying to take away. That is my current goal: to create peace and quiet for developers.
2. You worked a lot on the LINQ project and it got released a year ago. Are you satisfied with what you've done in C#, in VB, what you actually introduced in the .NET platform?
Definitely. I think the nice thing that I like about LINQ is that it has really deep roots in functional programming and in category theory, which means that it has a lot of mileage. There are a lot of things that people can do with it, it's not just like some idea that will be obsolete soon. You can already see people picking it up, many people are writing LINQ providers, LINQ to Sharepoint, LINQ to Flicker, LINQ to Amazon. I think it will increase when people discover the actual power of LINQ.
The other thing that I think is quite cool, but not many people have discovered, is the fact that hidden inside LINQ is the ability to do meta programming, where you get data that represents your code. Currently we've used that to generate SQL from a LINQ query, but of course, you can use that to generate all kind of other target codes. You can imagine if you have any special purpose machine that has its own query language or its own little language, you can now write a LINQ query and then take that expression tree and compile it to that kind of target. I think that's completely unexplored territory, so there will be a lot of interesting developments when people out in the wild discover that capability.
3. C# and VB have considerably a lot of syntax - some people say it's because of the lack of some powerful abstraction concepts - like in Haskell, type classes or type constructs. Don't you feel sometimes frustrated that each time you want to add something you have to go to the compiler guys and ask them to add more syntax, whereas in Haskell it could be easier or more powerful?
I don't think that's actually true. If you look at Haskell, there are new things added to the language all the time, as well. It's not different in that respect. On the other hand you can even argue that object orientation is more powerful than functional programming. For example, in an object oriented language, you can do virtual methods and things like that - if you want to encode that in a functional language you'll have a hard time. I don't see that as a real problem.
Actually, if you look at where I'm going, I'm getting more and more into old school object orientation with interfaces and so on, going away from functional programming. If you are passing a high order function you are passing one thing, one closure. If you're passing an interface or a class, you are passing many because you are passing a whole V table. These can all be recursive and so on. I'm rediscovering object oriented programming and I feel that maybe I wasted some of my time doing functional programming and missed out on objects.
4. But, for example, there are some things you've been implementing, like when you've been implementing LINQ, you could just say "I need type class here". What you did instead was to introduce extension methods, for example. One difference between them is that you can actually define implementation of type classes after the design time of some type, which is not true for interfaces. Interfaces, you have to implement them inside the class whereas type classes you can extend later. It's like you have just discovered "I don't have this. What should I do?"
Again, I think the reality is not that clear. The reason that we had to use extension methods and used this sequence operator pattern is that generics in C# and VB are not powerful enough, so you don't have hierarchal typed variables, so you cannot abstract over typed constructors, you can only abstract over types. That's the reason why I had to do it like that.
I think type classes, in some sense have a lot of problems, too, because once you've introduced a name inside the type class you cannot reuse that in another type class. Once I've used Foo and now the compiler uses Foo to associate with that class. I don't think type classes are a solution to everything. What I would like for interfaces is something like intersection types where you don't have to declare an interface upfront, but I can just say "I assume that these parameters set describes this interface and that interface and that interface." You can do a little bit like that it constrains, but it would be nice if you had that and I think that would solve a lot of problems. It just shows that there is always evolution, so there is always a need to add stuff to a language. Once you are finished with that, we will be on the streets.
It's good that we discover new things that we need, all the time. Another thing is that you cannot really predict what you need in a language, because the way I look at it is: you are writing some piece of code and then you see patterns that appear all the time, so you are writing the same stuff over and over again. That is a sign that you have to add language support for that, but, as we change the things that we write there will be other patterns that we will see, so there will be need for new language constructs. The answer is, maybe, that it's hard to take things out of the language. They only grow, we never seem to take stuff out, but that's the way it is. At some point maybe you have to just start from scratch.
5. Also for LINQ, the team added "select from" and "where" constructs of the language - some syntax. Some people call it monadic syntax - the same syntax we use for monads. Some people try to use it in other things than list comprehensions and states. Do you see other uses of these - "select from" and "where"?
Definitely. I think people have not really discovered the real power. A lot of people, when they hear LINQ, they even think about "It's something that has to do with SQL and databases". I don't think people realize that any type that implements these sequence operators you can write queries over, like in Haskell, as long as you are going to implement the monads type class - you can do binds, return and so on. All that's comprehension and it's exactly the same here. It will just take a little time before people have discovered that and they will write the most crazy LINQ implementations.
These things take time and I think it's good that they can get used to it in its current shape for lists or for collections that they understand. They will go on and do state monads and exception monads - I don't what - because if you look at the sequence operators, they are the monadic operators. What is also interesting is that, besides "select from" and "where" we also have "group by" and "order by", which are not in Haskell's comprehensions. Then the funny thing is what happened is that the Haskell guys saw that and said "That's quite useful". Simon Peyton-Jones and Phil Wadler wrote a paper where they improved the Haskell comprehensions with things from LINQ, so it is a nice circle going on where the languages influence each other and get better.
6. In Microsoft, are they trying to implement other monads in .NET? For example for Volta or for Continuation, whatever it is?
There is definitely stuff going on there and I think what you will see more to start with is having a LINQ friendly interface on top of some API. It's more in the sense of LINQ to XML, where you are not providing different implementation of a sequence operators, but you are adapting the API such that you can use LINQ to either construct instances of classes or take things apart. I just did an interview with Bart Smith on Chanel 9, and he has been doing quite a lot of alternative LINQ implementation, so his favorite example is "LINQ to Simpsons" - his name is Bart - it's a kind of crazy implementation.
He has also a LINQ to Sharepoint, I think he has an implementation for PowerShell, so he is doing some interesting things. In my talk on LINQ, I have an example of a really weird implementation that shows that you don't need lambda expressions. If you implement the sequence operator correctly you can say "From X in default of int select X + 1" and that means lambda (X, X+1). You can do weird things like that, but again, I think we are very early in the development and when people will discover this, that LINQ is not just for collections, you will see many other applications of it.
7. In functional programming languages, a function is just a value that has a type. It's the same thing like an int and string. Based on that, don't you think, for example, we can just omit or remove methods from C# and VB and replace them by properties that have a function return type because we have the function type in C#. Can't we just remove methods and use properties of function type?
In some sense, that is what methods are. When you create a delegate from an instance, that's when you get a function that closes over the instance, so I don't think there is that much difference. The other thing that you have to really understand well is that methods are special because of virtual dispatch, where you can overwrite things and it's not that easy, it's not just properties of function type, because in the subclass you can overwrite a certain method.
It's quite easy to encode both ways around, but by creating a delegate from an instance, you can take a method and turn it into a first class object. You can also define a property of function type and then call a method via that. In some sense, events in C# are like that - you expose an event but it's really like a couple of properties that you get and set. You see that pattern, for example, in the Async design pattern using events where people can use an event to dynamically change the method in a clause and then you can call that asynchronously - people are doing things basically like that.
8. Now we introduced lambdas and LINQ. Don't you think that there are some features in C# or some syntax that we have just to decide to delete actually, like using keywords and syntax that today we can implement them as functions and high order functions? Don't you think that there is a time where we should start just deleting features from the language?
Life is more complicated than that because you cannot really do these things by high order functions. For example, suppose you say "We don't need 'for' loops because I can just have something like I pass a lambda for the function body or for the loop body", but that's not really the same. If I have a return inside of the fore loop, I return from the method.
If you would pass a delegate or something that has a return, you only return from that delegate, so you don't have non-local returns. What happens with exception handling? I definitely don't believe that we can take control structures and replace them by delegates or lambda expressions. The same for the "using" statement, because inside of the "using" statement I can throw an exception or do all kind of other things. For simple cases you can do it, but if you look into real more complicated things, you have to be really careful.
9. C# and VB are languages that have side effects. Some people have argued that, when effects are predictable, it's OK, we still can deal with that, but when you add to these lazy evaluation and some lazy constructs like delegates, lambdas and enumerators, then you get into a problem, because effects are no more predictable. Don't you think that this is dangerous for big applications, for the enterprise and C# today?
I don't want to make sweeping statements that this is dangerous for enterprise applications, but it is true that, if you have effects that are implicit, that it's hard to reason about because they are invisible, they hide in dark corners and they can come out and bite you. What I would like to see is that effects are become part of the signatures of methods, just like you say "This thing takes an integer and returns boolean", then also say "It can throw an exception and it will take a lock" and all these things, such that when you look at the signature of a function or of a method, you can understand what it does. Now you know you can reason about it.
In some sense, even current type systems, even if you say "It takes an integer, returns a bool" - that's not even expressive enough. You want to go to a full contract system where you can say "This takes an integer, but it's really a prime number that's greater than 13. It returns a boolean when it's bigger than 128" or something like that, you want to be able to be really precise about the contracts that your function implements. Effects are part of that, but definitely not the only part of that. If you have very precise information about your methods now, you can start to reason about it. Then the compiler can start reasoning about it, but you can never be precise enough because at some point all your knowledge goes into these contracts and to these types and there can be bugs in there, too, because you've made a mistake in your contract.
I think when you say it's a dangerous one, programming is inherently something dangerous - building is something inherently dangerous - that's what humans do: we are creating things and we can try to make sure that what we create is safe and so on, but you can never really be certain. You always make some sort of assumptions, because when you are building a building, you are making certain assumptions that there is not an earthquake bigger than a certain strength, but maybe something else happens - a really strong wind that you didn't think of. It's the same with codes - you define your contract, but maybe your program will be used in different circumstances or so on. That's a really hard question that you asked. You can always prove it correct with respect to certain assumptions, but not with everything.
10. LINQ added some functional programming concepts to .NET languages. Are there any other concepts that you'd like to introduce in mainstream languages?
One of the things that I am quite concerned about is that all our languages are really designed to deal with sequential synchronous computations. If you look at the basic building blocks using which we build programs, it's sequential composition - semicolon, do this, then that. When you are making a method call or procedure call it's synchronous: I'm calling this, I'm blocked until this thing computes and then it returns. You usually don't think about what goes wrong, so you write your code for the normal case and then you put exception handling for the error case, but you assume that's quite uncommon.
If you look now in a more distributed setting, first of all there will be errors all the time because the connection might be down or you don't have permission or the machine on the other side blows up or things like that. You have to deal with errors much more seriously, you have to deal with latency and things like that, so you cannot assume that you're making synchronous calls. All the assumptions that we use to build simple programs, simple "Hello world" style imperative programs, don't really apply to this other distributed setting. While I still believe that at the leaves of your computation you'll have just imperative programs that are stateful, to compose them we need something that can deal with asynchronous computation, that can deal with errors, maybe even deal with mobility - that's something that we cannot reason very well about -, programs that evolve over time.
I always make this kind of analogy that, if you have to have surgery, I'm not going to kill you, do surgery and then re-awake you, reboot you - no! I sedate you, you do some surgery and then I wake you up, but you are not completely gone. For the program, or with the system, we usually have to completely shut it down, change it and then bring it up again. There are lots and lots of problems that I do see, but I don't know yet where to write language constructs or what we should do. Definitely, looking at distributed and parallel programs, the field is quite young.
If you look at engineering or maths, we've been doing that for thousands of years, so we now know how to build a building and make it solid. With code, we've been doing computer science for 70-75 years, so we are still scratching the surface - we don't have a real theory or like physics, where they have a good foundation. We have the Turing machine that doesn't really reflect distributed computation. The lambda calculus captures certain parts, then there is a lot of process algebra, but it's not yet clear that we really have understood everything, which I think is fantastic, because that means there is opportunity to discover new things. This is quite a long minded answer, but I hope that makes sense to you.
11. What do you think of the syntax similarities and the semantics difference? For example, there is Scala today that looks a bit like Java, but it has completely different semantics - same as JavaScript. Some people try to look at it as the same syntax of some languages, yet semantically it's completely different. Developers that used to develop in language A, will go to language B and will do some assumptions that will no longer stand. What do you think of that?
You can look at a question like that from 2 points of view: you can say "Yes, the semantics is different, and that's dangerous or troublesome", but this semantics is often not really that different, because in some sense - I don't know who had that quote but - if you look at all the current imperative languages, they are really all variations of Fortran. Fundamentally, they are not that different - there are certain differences: how variables are captured and how exceptions are handled, but really they are not a decor, they are very similar, they are more similar than different.
A good programmer should be aware of these differences. It says more about the quality of the programmers than of the languages. If you are a good programmer, you know that these languages are more or less the same, but different to details. Having the syntax look similar is OK, because it's easier to transfer your knowledge - the semantics are very close and also the syntax is often a little bit different. Do you write "function", or do you just write "class" or "class C:", "base class" or "extends"? - these are syntactic differences. Be aware that these things exist and then it's OK. It makes fun puzzles like "This thing looks very similar, but it behaves quite differently" - that keeps us awake.
12. Aren't you interested in implementing the same things on the JVM, that you did on the .NET? For example: LINQ and all the stuff you did in .NET. Are you interested in doing the same thing on the JVM?
First of all, all the stuff that we did for LINQ didn't require any changes on the VM level. We wrote a paper about that, Lost in Translation, where we show that you can take everything in VB 9 and C# 3.0 and just compile that to unmodified CLR. It doesn't require any changes there. Now you ask me am I interested on doing this on the JVM? Personally, why would I do that? I think it's interesting if something would happen in other languages. It doesn't seem logical that I would do that, given who my employer is, but in some sense - as I mentioned this example before with the comprehensions - we got inspired by Haskell with LINQ, and then Haskell got inspired again by LINQ and so I can imagine that other languages get inspired by these things.
That's how things evolve - people have ideas and they cross-influence each other. In some sense, everybody is trying to solve the same problems - the problems don't change. We all have to access data, we all have to write distributed programs. If you look at the dynamic languages, at C# 4.0, they are adding support for dynamic typing in there. Things evolve - that's good -, there are always new things coming up. There are so many problems that we have to tackle, so that things cannot stop. Look at everything in society: cars change, there are new models coming out; it's the same with programming languages - there will always be developments and they will evolve. That's a natural thing.
13. I am a C# developer and sometimes, when I develop in C#, I get to some point I say "Oops, it's not inferred anymore"- for example type inference, if I could do carrying here or partial application, or whatever it is. Do you think that it's important to add these concepts to the language like better type inference, the same as it exists in F# or carrying and partial application in the mainstream language?
You are asking tough questions. With type inference you have to be really careful. For example, in Haskell, or ML or the kind of Hindley-Milner based type inference in quite powerful, but the downside is because it's so powerful, when something goes wrong you get these weird error messages. It cannot unify 5 pages of type that look exactly the same, but deep there, there is int and there is bool. Because these things are often unification based, the place where this thing goes wrong is far removed from where the actual error really originates. Yes, the type inference is very powerful, but the usability goes down. It's a delicate balance between making things predictable and usable and making it more powerful.
One of the nice things that I like, for example one of the design principles in C# type inference is that we never cook up a type out of thin air. You can see that from the type for the conditional operator. One way to do that is you look at the then part and the else part and you say "Let's find a common supertype for the 2", but now the compiler is cooking up some type that the programmer never wrote so you might get weird error messages because I never mentioned that type. Plus, what happens is that common supertype will often be object because there is int and string - that's object, which is basically a sign that something is wrong.
What we do there is we say "Well, there must be one type to which this one converts or to that one converts", we are never trying to infer a type. When we write a variable declaration we only look at the initializer to infer the type, we are not looking elsewhere, because you get this thing, the promise of unification where it might be because you assumed something here, but you know you violated there. Which one was wrong? Was it wrong there or was it wrong there? It's hard to pinpoint. Whenever you pick a type inference algorithm, you have to be very careful that it's predictable, or you change your program slightly and certainly you cannot infer any more, which becomes highly non-monotonic - that's a possibility.
It's careful engineering to get that right and I don't think there is a right answer. Another thing that people often ask is that "Why can't I infer the types for fields inside a class?" The thing there is because these things can be mutually recursive, so I can have int X = Y and they can even be dependent to one field and one class can depend on another field in another class. You get this very complicated systems of equations that you have to solve. Usually things are more complicated than you think at first sight.
If you are trying to make it too complicated, first of all there is a high chance that you introduce bugs in your type checker, which is something you don't want, plus it's hard to show errors and so on. There should be a good balance between the 2. For example, in C# 3.0 VB 9 we have this anonymous types and it's not really anonymous type, it's a compiler generated type, so you cannot write these down. That's where I think I would have liked to see something that we could have done, because sometimes you are forced to do type inference and there are cases where you cannot. For example I cannot return one of those types from a method, so there is a discontinuity there, where you suddenly have to jump paradigms.
With a lot of these things it's hard, if the underlying Runtime doesn't support that to make that all work. It's all a matter of engineering and you only have a fixed amount of dollars or time to spend, so you do it and then later you can improve it. The beauty of language design is that it's engineering and art and everything mixed together where you are trying to search for an optimum, but is not clear that there is a real best way to do things.
14. One of the things that you have mentioned was that a lot of languages that we have today are trapped in this quench of programming. What kinds of abstractions and syntax do you think are going to be good for allowing us to move towards more of a parallel model?
With a lot of these things, I see the problem, but I wish I would know the answer. Then, I would probably retire, I could win the jury award or something like that. The thing with parallel programming - first of all that's a very diverse field, because people sometimes make distinction between parallel and concurrent. There are certain things, like certain algorithms where we know how to do it in parallel, because they are well-structured, there are design patterns, so you can break a big problem in small things that can be solved independently. We have more problems when it's unstructured and when there is asynchrony involved and error cases and so on.
In some sense, our brains are not really wired to think about these things. We like to break things up into smaller things, in a compositional way, whereas a lot of this asynchronous programming is not at all compositional, it's very messy. You cannot have a big problem and say "Oh, that's composed out of 2 things.", but that's how traditional programming works. You write an arithmetic expression A+B, then I can look at A and understand what it does in B and then I can reason about the whole.
We already mentioned this with side effects - side effects muddy the waters a little bit, because you cannot think compositionally because, maybe, if I do something here, that might change some global state and that might affect that thing here. I think imperative programming is inherently non-compositional, but usually we can wave our hands or if you reason with pre and post conditions, you reason about the whole state and you reason how each statement changes the one state into another state and if there is some predicate that holds for the state before then if there is another predicate that holds for the state afterwards, you can use invariants.
People have found all kind of ways to reason about states and still make it compositional by making that state explicit. Let me give you another example: power consumption. Everybody is building these giant data centers and they use a lot of power; power is a resource that your program uses, just like space or memory or whatever, but it's something that we've abstracted over. How do you know that, thus using a conditional, you use more power than using a why loop or maybe foreach loop uses less power.
There is no way we can reason - looking at our programs - about the power consumption. Yes, we can reason - and we don't often use this - the computational complexity. You can say it's an end square or a cubic or something like that and there is some theoretical work that talks about the power consumption, in circuit design and so on, but you look at your C# program and you say "Does this one use more or less power than that one?" We don't know. Now, you ask me what are the language constructs and if we can do that. I say "No, I see the problem, but I don't know how to do that".
The other thing is that notation is often designed to be compositional - that's how you write expression. For example A+B - you write smaller things that you can glue together. With asynchronous programming is the opposite. You wait for the values, these things happen independently and it's inherently non-compositional. The question is "Can we do the same that we did for state and turn something that looks non-compositional into something that's compositional?" I don't know the answer to that, but that's the Holy Grail.
I do believe that compositionality is essential for humans to understand things, but that also makes parallel programming so hard. With sequential programming you can say "OK, I look at this piece of code and I can follow it in my head: it does this and then that", so you can break it up in smaller pieces. In parallel programming, when things run in parallel, their combinatorial explosion in your head is just too big to understand it, so we have to find other ways to keep it in our minds. That will be one of the biggest challenges that we are facing.
15. Did you give up on Haskell?
I never gave up on Haskell. The nice thing about Haskell is, because it's pure you cannot cheat, you have to be pure. The language forces that, you cannot put a print statement in your code to do debugging, because that's a side effect and everything that depends on that expression has a side effect, too, so it forces you to be absolutely honest - there is no cheating. On the other hand, in reality, you don't need those strict rules.
It's like in normal society: there is a lot of loss, or rules, and if everybody would strictly follow the rules, the whole society would come to a slowdown. People sometimes do strike, they don't strike, but they can start following the rules, precisely saying "We can only work for 3 hours, then we have to have 30 minutes rest". If you are really that strict, then nothing works. It's the same with programming - in certain situations you don't have to be that strict about purity, but it's good to look at that.
The other thing with Haskell is that, because it's pure - Sammy Pages says it's like a pottery dish - you can do lots of experiments in the language that influence other languages and you have to be careful that you don't, by taking one idea from here, and putting it there, you don't get yourself in trouble. For example - that was one of your previous questions - because everything is pure and lazy here, I put it in this imperative context and there are some unintended consequences, because a side effect can happen and it messes things up.
You have to be a little careful about that. Haskell is a very good inspiration, a very good experimental platform and I do believe that being precise about contracts of functions is really important.
Haskell is definitely one example, but there are other examples, too, if you look at I4 or Spec# or programming by contract - those are things in a type system, people have been doing that in Scheme. Those are things that Haskell doesn't have. There are some proposals of doing contracts in Haskell. It's not only Haskell that will give us the inspiration, but we should look at all kind of languages and all other approaches. I always had either Haskell or GHC installed on my laptop, every month I write a little Haskell program, I do a lot of little prototypes in Haskell.
16. You mentioned notation being very important and of course, LINQ introduces this new syntax "select from" whatever you select and all that. What kind of things can we do to the language to facilitate the creation of things like internal DSLs or other syntax, which - like LINQ - would enable more easy expression of certain concepts, like composition of asynchronous functions, for example?
That's a tough question because I'm not a big believer in user defined syntax. Let me give you a simple example: in Haskell you can define your own operators with precedents and priority and things like that. You can build this domain specific things with that, but it's like every time you have to learn a new language when the syntax of one language resembling the syntax of a different language even though the semantics is different - that's a good thing. The nice thing about the fact that certain languages use the same alphabet is that it's become slightly easier to learn a new language because you don't have to learn a new alphabet. If you are trying to learn Russian or Chinese or Japanese, not only do you have to learn the new language, but you also have to learn a new notation and you have 2 moving targets.
17. Let's make the problem a little simpler. We don't want to create new syntax because it's cognitive and overhead - everyone has to learn when they want to work up the code, but from Haskell, we certainly see that introducing monads to constrain function composition and create new computational domains for reasoning about parts of your program, reasoning about the effects that occur in those parts of the program, or reasoning about how distinct computations are composed to achieve the semantics you want. Can we introduce some more limited form into C# , which would allow us to even just say a little more about function composition, so we can create things that are similar to a using statement or an assert statement, or some kind of selection operator like we have from "select" and so on, which really just talk about what happens within the scope of a block, like an F# workflow for example?
You mentioned Haskell with monad comprehensions - the thing there is that since this works for monads, even though the underlying monad is different, the notation is the same, but because all the monads satisfy this monad loss or whatever, you can still understand that program without having to understand the monad. In some sense, the way I always explain to people, you just pretend it's the List monad or maybe even the Maybe monad - you take the simplest monad, you try to understand that program and then you understand it for whatever monad it was, because they all satisfy the same loss.
You can look at that syntax, take one interpretation and it works for another interpretation - that's what helps. So, it's one syntax, different semantics with all these semantics are essentially the same, because they embody the same concept. The same with comprehensions in C# and VB, with "Select", "Where" and so on. Then you say "Can't we do the same for blocks and so on?" and asynchronous workflows in F#, but there you are making a quantum jump, because if you look at syntax or the semantics of blocks in C# or VB, it's very complicated because of exceptions, because of non-local returns, break return, continue - all these things whereas you cannot just lift this out and overload the control structures.
We can overload only one thing, foreach statement, because that boils down to "GetEnumerator" and "MoveNext" and "Current". The rest you can borrow from the normal statements, if there are exceptions or non-local returns, but it's really hard because there are so many hidden assumptions inside a normal sequential code, that to overload that notation, the contract that you would have to satisfy would be quite complicated, whereas with monads or with LINQ expressions you implement these methods and then it works.
In some sense, if you look at workflows in F# it's similar - like there is a "while" statement in there, but they don't have unstructured control flow where there is a "switch" statement or there is a "break" or something. You can write a very limited subset, which really is more or less the same as writing LINQ comprehensions, which has conditional and "select many" is really a for loop. I don't think there is a real fundamental difference between the 2 - the syntax looks a bit different -, but it's a very restricted set of operators that you implement and then you can get this special syntax that you can overload.
In C++ people try to do that where you can overload assignment and dot and things like that. Apparently, people find that useful and people want to do it. They want to do smart point or some things like that, but if that set of operators either is big or has very subtle semantics, then you cannot use that conceptual knowledge or the conceptual reading of the program because you cannot really understand it - you have to know the implementation.
18. With the inclusion of parallel extensions in .NET and trying to make concurrency a little bit easier, say through the async workflows, do you think that's enough? Where do you see similar things going? Because concurrency is hard and some of those abstractions are trying to make it easier, do you see more things like that coming?
The answer of my previous question applies here, too. If you look at the async workflows or Parallel.ForEach()in the ParallelFX, it's a step forward, definitely a step in the right direction, but it's still a small step, because it's still really hard to write asynchronous program that maintains it's states across several asynchronous calls. You can write an async workflow, if you use a very restricted set of control structures, but you cannot have a statement in there or any other things, so we are definitely not on par with sequential programming.
It's good that people start to think about it, it's way overdue. We saw this coming, and now people start thinking about it, but we are just scratching the surface. Then, you can say "Our current program model is not the right one" - there I say that also evolved for a good reason. We had this question before - why do languages add new things? Because there are certain problems that you want to solve, so we add language features. You can complain about a language that it's big, but you look at every feature and there was a good reason that it ended up in the language, because it's not cheap to add something to a language. For every feature that ends up in a language there are ten that are maybe a little bit used for whatever, but don't end up there. At some point there was a good reason to put it in, then probably these things are useful in some way also for the asynchronous case. As long as you don't have that kind of full symmetry between the 2 worlds, there is still a lot of work to do.
Hello stranger!You need to Register an InfoQ account or Login or login to post comments. But there's so much more behind being registered.
Get the most out of the InfoQ experience.
Tell us what you think
More Haskell-y?
Dmitry Tsygankov
While what Erik Meijer says about "too much of" type inference is true, C# has a long way to go in that direction. Not only does C# conditional operator fail to infer the type if no type was provided, it also fails to infer it when it was explicitly provided in the signature of the method, or in the variable declaration.
Yes, LINQ is extensible - but due to the nature of extension methods, it's not polymorphic most of the time. Waiting for extension interfaces...
Yes, LINQ is "almost" monads, but one cannot define an IMonad interface due to the nature of C# generics, see the comments to this blog post for details: blogs.msdn.com/wesdyer/archive/2008/01/11/the-m....
I find C# operator overloading mechanisms no less confusing than those of Haskell, but much less powerful.
It is questionable if the non-local return operator mentioned in the talk is worth keeping - it's a goto statement in disguise and I've seen some programs entangled to something unrecognisable by all those return-s and continue-s.
In fact, there is a design by contract framework for Haskell, it's the QuickCheck testing library - implemented as a library, not a language extension. The tests look like "prop_test args = precondition ==> postcondition" and they are kept separately from the main code, which is a good thing.
Having said that, I'm not sure if it's easier to write a conventional business application in Haskell than in C#. I'd like to experiment with it but don't see a reasonable opportunity.
Re: More Haskell-y?
Sadek Drobi
Re: More Haskell-y?
Dmitry Tsygankov
I guess all those things - generic variables and generic parameters - correspond to rank-2 polymorphism in Haskell somehow.
Reasons why nobody is ever going to care about Monads in C#
Stefan Wenig
2) There are no good explanations. Eric Meijer used to have a paper on his MS Research page that got linked quite a bit, but it's no longer there. The article from Wes Dyer that Dmitry linked to got quoted a lot, but it doesn't even try to explain why anyone should use Monads. (The null propagation? If you get to the core of it, it checks all input parameters for null-ness and then either evaluates the whole select expression - or not. The arithmetic expression itself is not elevated. Quite a lot of noise there, not very impressive. Continuations? Same problem. Now in addition to Monads, I have to go somewhere else, find out what continuations are and what they are there for, come back and try to understand Wes's implementation, and think hard about how I could use LINQ to support real-world scenarios using continuations. Unlikely.)
3) C#'s syntax is flawed. I like a lot about the way LINQ was integrated via new C# features. But the Func<> delegates kill me, especially when their arguments are generic too. I frequently find myself using some currying-like notation on paper when trying to read stuff like Wes' article.
4) I don't know a lot about Monads, so I could have that wrong. But I believe that while LINQ is obviously an application of Monads, it just sucks for any amplification that is _not_ IEnumerable. It might be fun to try and use it anyway, but only while you're busy playing with Monads. Who want's to see this in production code?
I might be wrong, maybe someone comes up with a great paper that shows how to implement some parser using Monads in C# in a way that really makes sense, or something like that. But LINQ has been around for some time, Eric has written and preached his stuff, explained how LINQ is just Monads to the Lambda-the-Ultimate crowd, and nothing happened. Why should that suddenly change?<>
Re: Reasons why nobody is ever going to care about Monads in C#
Dmitry Tsygankov
4) for any amplification that is _not_ IEnumerable.
Actually, there are some problems even for IEnumerable. I stumbled into one of those today.
In LINQ framework, there are some 22 independent implementations of IEnumerable.Min extension method, and the same for .Max, .Sum, etc.
If I have my own number-like class with some operations of addition and negation, I don't get the two overloads of .Sum for free. Instead, I have to implement them by my own, which is a bit annoying and in my case it probably makes the whole idea pointless.
Now, suppose I'd like to fix that, so that I have one implementation of .Sum I can always use. I could do something like this:
public static T Sum<T>(this IEnumerable<T> sequence)
where T : IAdditive<T>
return sequence.Aggregate((left, right) => left.Plus(right));
Is that an adequate replacement for IEnumerable<int>.Sum? No, it's not. It doesn't behave the same way for empty sequences. If I want it to behave reasonably, I'll have to fetch the zero value somehow and return it in case of an empty sequence. The problem is I cannot do that! The default(T) gives me null, which is not what I want.
What I would like to have is something like zero(T), that is, I'd like to have a method that is polymorphic in it's return type. But I can't do that in C#! C# only allows me to have polymorphism of this kind on the first parameter of the method.
The same thing happens with methods like long.Parse, int.Parse, decimal.Parse, etc. A colleague of mine tried to create a generic Parse method a few days ago, it all ended up with "if (typeof(T) == typeof(int))" etc.
It's not a big deal, one can always fall back to code duplication and if-else, but those little traps are everywhere!
Now I have no right to tell anybody that Haskell is the best language in the world for all possible tasks, but the Read and Num type classes are definitely better than what I described here.
While what Stefan said about syntax and tutorials is definitely true, those problems are not fundamental and can be easily resolved, but a few more fundamental problems exist.</int></t></t></t>
Re: Reasons why nobody is ever going to care about Monads in C#
Stefan Wenig
some of those problems _could_ be resolved. But this stuff has been here for quite some time now, and nobody seemed to care. Why should that suddenly change?
Other problems are fundamental. The syntax is so hard to understand that it's actually easier to learn a bit of Haskell in order to get monads than to use your existing C# knowledge. At least that's my opinion, and I've tried it both ways. It's not just the Func<> syntax, it's also the strange SelectMany overload you need to transform if you want to use LINQ statements like Haskell's "do" and a few other details.
On the other hand, the lack of an IAdditive interface or polymorphic return types in C#/.NET is not a weakness of IEnumerable. You could just as well complain about any other feature, but it does not stand in the way of using monads in C#.
For the Aggregate function, you could supply a seed of "new T()", which would probably do the same as zero(T) anyway.<>
Re: Reasons why nobody is ever going to care about Monads in C#
Dmitry Tsygankov
For the Aggregate function, you could supply a seed of "new T()", which would probably do the same as zero(T) anyway
Thanks for the tip, I think, that might work in my case. Although not in general - there can be only one empty constructor but a lot of possible usages for it.
not a weakness of IEnumerable
Agreed, but it's a part of the whole "LINQ to lists" feature.
the strange SelectMany overload
Yes, that one is particularly annoying.
Re: Reasons why nobody is ever going to care about Monads in C#
Ryan Riley
I might be wrong, maybe someone comes up with a great paper that shows how to implement some parser using Monads in C# in a way that really makes sense, or something like that.
Luke Hoban's Monadic Parser-Combinators Using C# 3.0
But LINQ has been around for some time, Eric has written and preached his stuff, explained how LINQ is just Monads to the Lambda-the-Ultimate crowd, and nothing happened. Why should that suddenly change?
Functional programming is still very new to a lot of people, so you are going to see a lot more about what they are than how they are useful. That's always the case. However, I've started using continuations and am looking at the state monad for some real applications. They are terrific for parallel/async programming models. If you aren't doing async, then you probably won't see a benefit. As more move to that model, though, you'll see a lot more about applications of monads, I guarantee.
Also, the Reactive Framework (IObservable/IObserver) is coming out and works using the continuation monad (or something very close). See more here.

subset: commoncrawl


text:
Do you remember how you felt the first time you posted on a BrainTalk forum? Were you nervous, anxious, hopeful, desperate, scared, needing understanding, support and advice?
Whatever your feelings were at that moment, they are most likely mirrored in every new member, who posts here.
When you were a new member at BT, other members must have responded to you, for you to continue in the BT community.
I remember being warmly welcomed on the Child Neurology forum and quickly embraced into the family. And I had all of those feelings I described above, and more. But, those feelings dissipated as I realized that I was among kindred spirits.
Here, at BT, I was with people who get it, who were living a life similar to mine, with the same kinds of issues and concerns. It was comforting and reassuring to know that I was not alone, and that others cared enough to help me.
And while I dont respond to every new members post, I try to respond to as many of them as I can, with at least a Welcome and a Hug. I often say, I dont know anything about your (insert issue here), but I hope someone who does will be along soon.
But, most often no one else does come along. And the new member doesnt return or post again.
What would happen if we all made an effort to welcome new members?
No one would have zero replies to her/his post.
No one would feel ignored or neglected.
New members will return and reply and become part of the BT community, because people here showed that they cared. If only just to say, Welcome to BrainTalk!
Of course, we all have our own overwhelming issues, but if we could just take a moment to help a new member with her/his overwhelming issue, then well be giving back what we have received here.
How You Can Help to Welcome New Members:
Go to the Home page and check for new member posts, or posts with no replies.
Go to New Posts and check for the same.
Click on those posts, and just type: WELCOME!
NOTE TO MIKE WEINS: Would it be possible for us to have some Welcome smilies/emoticons added to our list? An assortment of 3 or 4, perhaps?
My hope is that we will all make an effort to welcome new members, because if we dont, our community will not grow. And we all understand the deflating feeling of not receiving responses to our posts.
I pledge to be more aware of new member posts, and to welcome those new members. I hope that you will join me in that pledge!
Love & Light,
~ In Loving Memory of Our Dear Friend, Barb ~ Moose53 ~


text:
Celebrate the sixth annual Words Matter Week with the National Association of Independent Writers and Editors (NAIWE) and other friends and sponsors! As always, it will be held during the first full week of March.
The quote we have chosen for this year is from Don Juan by George Gordon, Lord Byron.
. . . Words are things, and a small drop of ink,
Falling like dew, upon a thought, produces
That which makes thousands, perhaps millions, think . . .
George Gordon, Lord Byron; Don Juan, Canto 3, Stanza LXXXVIII
There are many ways you can celebrate Words Matter Week. We offer a page of suggestions, and we welcome more. If you or your group is planning a special celebration, we invite you to share it in the comments below. Also, please share the event with your friends, family, and colleagues. One way to do so is to print copies of the Words Matter Week 2014 poster, and share them anywhere you like. You're welcome to use the poster image on your website, too.
Blog Challenge
The second thing we would like to invite you to do is to participate in the blog challenge. There will be a prize of a $25 gift certificate to Amazon.com for a blogger who blogs on one of the challenge topics; then comes back to this post to leave a comment and link so that we can read your post. As in previous years, the winner will be randomly chosen from the bloggers who write a post, then comment below during Words Matter Week. You may win an extra entry into the drawing by posting a link to http://WordsMatterWeek.com
Here are the Blog Challenge Questions for Words Matter Week
Writers craft words into memorable phrases, stories, poems and plays.
What writers make your heart sing? Why?
"To me, the greatest pleasure of writing is not what it's about, but the inner
music the words make." ~Truman Capote
What word, said or unsaid, has or could change your life? How?
"In the End, we will remember not the words of our enemies, but the silence of our friends." ~Martin Luther King, Jr.
Communication breaks down when words are misused. What is the funniest or worst
break-down you've ever observed?
"Speak clearly, if you speak at all; carve every word before you let it fall."
~Oliver Wendell Holmes
What person in your life helped you understand the importance of choosing words carefully? What would you say to them if you met them today?
"Words – so innocent and powerless as they are, as standing in a dictionary, how potent for good and evil they become in the hands of one who knows how to combine them."
~Nathaniel Hawthorne
If you had to eliminate one word or phrase from the English language, what would it be? Why?
"Words are loaded pistols." ~Jean-Paul Sartre
Give Books to Children with First Book
As we have in previous years, we invite you to spread the love of words by donating to the charity, First Book. They provide new books to children in need, and by contributing to their work, we are encouraging a new generation of readers and writers. Please consider sharing; even a tiny gift makes a difference. At least, visit the web page and watch the delightful video of children's book authors telling the story of First Book. We think it will make you smile.
Finally, once again, please share Words Matter Week with your real life and social media contacts. Words are important, and once a year, we dedicate a bit of time to pondering them. If you participate, please comment below, and tell us what you're doing. We would enjoy hearing more creative ideas!


text:
They're researchers, industry professionals, and most importantly, mentors.
Global Perspective
Nearly one-third of our faculty members are international, bringing unique insights from countries, such as Germany, India, China, Israel, and Brazil, into the classroom.
You'll learn from experts in your field. Our academically qualified faculty members are published regularly in top-tiered journals. Their research helps them stay on top of the latest developments in business, and they pass that knowledge on to you.
Industry Professionals
Our faculty members are active participants in business, government, healthcare, and nonprofit communities. Many also serve on corporate or nonprofit boards, consult, or are members of professional associations. They incorporate their real-life experiences into your coursework.
With small classes of 20-25 students, you'll form lasting relationships with your professors. They offer academic support, career guidance, and access to their professional networks.


text:
August 7, 2008
Something Else #16: Van Morrison
The first one was taped at Pacific High Recording Studio on September 5, 1971 for a KSAN (San Francisco) radio broadcast. His seminal album "Tupelo Honey" would be released the following month.
The second is "Talking To The Spirit" -- songs from two dates in 1988 with The Chieftains and Derek Bell. It includes a bunch of songs from his album of the same year, "Irish Heartbeat".
19 comments:
- redsock said...
Van Morrison
Pacific High Recording Studio
September 5, 1971
Parts One and Two
Into The Mystic / I've Been Working / Friday's Child / Hound Dog / Ballerina / Tupelo Honey / Wild Night / Just Like A Woman / Moonshine Whiskey / Dead or Alive / You're My Woman / These Dreams Of You / Domino / Call Me Up In Dreamland / Blue Money / Bring It On Home / Buona Sera
Van Morrison
"Talking To The Spirit"
Parts One and Two
The Van Morrison Band, Ulster Hall, Belfast, September 15, 1988:
Tore Down A La Rimbaud / In The Garden / Rave On John Donne / Did Ye Get Healed
Van Morrison and The Chieftains, Ulster Hall, Belfast, September 15, 1988:
Star Of The County Down / She Moved Through The Fair / Ta Ma Chleamhnas Deanta / Tell Me Ma / Carrickfergus / Celtic Ray / Marie's Wedding / Boffyflow And Spike / Goodnight Irene / Moondance
Van Morrison & Derek Bell "Unplugged", Coleraine Universtity, April 20, 1988:
T For Texas / When I Was A Cowboy / Sense Of Wonder / Celtic Ray / In The Garden / Raglan Road
- August 7, 2008 at 2:09 PM
- A Conformer said...
Reposting this here, since at the end of last night's game thread it won't be seen. And, it is music related...
ALNM said:
How about Joe LaHOUD?
OK, it doesn't quite work. But I love middle eastern music, and "lute" made me think of it.
ALNM, check out these guys
- August 7, 2008 at 3:46 PM
- Zenslinger said...
When I lived in Japan, every cover band did "Brown-Eyed Girl". I wondered if anyone but me thought that was kind of funny.
- August 7, 2008 at 4:11 PM
- wardo said...
Nice. thanks!
- August 7, 2008 at 4:23 PM
- L-girl said...
Ooo, burn this for me? Especially the Irish Heartbeat stuff. One of my all-time faves, as you know.
- August 7, 2008 at 4:24 PM
- phil said...
I'm a sucker for celtic crap.
- August 7, 2008 at 4:56 PM
- 9casey said...
Nice one , Van never grows old, spans generations....
- August 7, 2008 at 5:38 PM
- Tony said...
Wild Night is the kind of song that makes me want to get up and dance. And I hate dancing.
- August 7, 2008 at 5:48 PM
- phil said...
Allan can burn it after he's finished burning your compilation of chaconnes.
- August 7, 2008 at 6:04 PM
- Jere said...
In the Yanks game, Texas grounded into a double play...with a man on second! That tells the story of their insistence on NOT scoring tonight. 3-0 Yanks, final.
Ray's Infamous leads the Mercury Mariner, 1-0 in the 7th.
- August 7, 2008 at 8:44 PM
- Jere said...
Ibanez leadoff dong in bottom 9th to win it, 2-1 Seattle. We're 2.5 back.
- August 7, 2008 at 9:21 PM
- James said...
For you, I submit, this:
- August 7, 2008 at 9:55 PM
- A little night musing said...
resock: this was just what the doctor ordered.
Not too long ago I was ordering coffee in a Starbucks (yeah, I know, but it's the only place close to work to get coffee) and "Blue Money came on after I placed my order. I so completely went off into the music that the cashier had trouble getting my attention back. (He was amused, but recognized Van Morrison so I think he "got" it.) That's how much I love Van Morrison.
a con:
I know Bustan Avraham very well! They're fabulous. But thanks for mentioning them; they've got an album there I haven't heard yet.
- August 7, 2008 at 10:02 PM
- phil said...
MFYs win but FKRs lose.
- August 7, 2008 at 10:24 PM
- Jake of All Trades said...
Listened to the Pacific High Recording Studio one during dinner and loved it! Especially got a kick out of the brief "Que Sera" intro to "Hound Dog"
- August 7, 2008 at 11:12 PM
- phil said...
The files were taken down, by the way.
- August 9, 2008 at 8:03 AM
- L-girl said...
There ought to be a warning sticker on this Van Morrison: CONTAINS RELIGIOUS MATERIAL MANY LISTENERS WILL FIND OFFENSIVE.
- August 9, 2008 at 10:49 AM
- L-girl said...
(yeah, I know, but it's the only place close to work to get coffee)
No need to apologize for where we drink our coffee!
Allan should apologize for this shitty Van Morrison, tho. I love Van, too, but if you're a fan you know that sometimes he can really suck.
- August 9, 2008 at 10:50 AM
- redsock said...
The files were taken down, by the way.
Van Morrison used to allow his shows to be traded between fans for free -- that's how I got these shows and others -- but no more. He has hired the same web goons as Prince to remove everything and anything connected to him on the internet.
Earlier this year, Morrison went so far as to shut down the "the most awesomely detailed and useful Morrison fansite on the web, run by Michael Hayward at Simon Fraser University in Vancouver, BC, despite the fact that the site wasn't making Hayward a dime. Every scrap of Morrison video is gone from YouTube ..."
- August 9, 2008 at 12:00 PM


text:
Meet The Newest Member Of The New York Knicks : James White (Crazy Vert)!
Making 10ft rim look short, Dunk contest anyone? posted by @mahad_worldstar
Please click the "Report" button below if the video on this page is not working properly.
Comments will only be displayed by verified emails. No Spamming or Racism.


text: You've heard the saying in Real Estate; "Location...location..location". Well, since I posted about the GeoGed.com site, I'm bursting at the seems with alternatives. First, there is PhpGedView, which is an Open Source application. I found out about PhpGedView via my site statistics, which showed I had a visitor that originated from a SourceForge.net forum. Oddly, someone posted the TrackBack link for my GeoGed.com posting. It was odd in that its just a link, no comment or anything. This is what exposed me to PhpGedView. Basically, PhpGedView is or can be a collaborative, fully Internet/Web based Genealogy program that can be edited anywhere there is a Internet connection. There is supposed to be a way to display your ancestors in Google Maps with this; subject for a future post.


text:
Google checkout integration classic aspJobs
Urgent Yoast SEO creator + Shipping options + Checkout page setup I'm looking for someone to help on creating an ecommerce setup page, shipping options and create SEO with Yoast SEO. SKILLS - YoastSEO + Woocommerce + Enfold theme
I need magento 2 Paypal Standard Web payment module to be modified so that when the customer checks out, he is able to choose the currency in which they want to pay at Paypal. (The dropdown will show the list of paypal supported currencies). By default Magento 2 supports only sending the base currency.
Hello Senior developers I am finding a person who have Ethereum Classic transaction experience. There's smart contract on ETC network, and just need to connect to the contract using Javascript. We have already existing script that works on Ethereum(same contract). Just want to find someone who is good at ETC network, I think it will be 30mins job if
I need to enable Shipping Methods on the bottom of checkout page . Website [log ind for at se URL] . Thank you.
What I have - ...script based html/jquery (no database is used) - The script allow add product to cart - The cart provide details of the added product and the button for checkout What I need - When click the checkout button it send needed info for process payment via paypal - After payment via paypal it redirect to a specified page I give ftp access
The job is to modify the wordpress based checkout and add more functionality. The checkout is currently basic. You must have experience with wordpress checkout and also payment gateway integration.
improve Stripe-Checkout integration as described in the PDF
Make me a checkout for a subscription payment. Users will be redirected to the checkout and then need to be redirected back upon successful purchase. Payment gateway is stripe
When trying to pay in our shop [log ind for at se URL] it says no shipping option is selected even though we selected it. We need help identify issue and fix it.
Need some changes to my website which is done in asp classic [log ind for at se URL]
We are looking for someone who can help us with out checkout page and creating customer accounts. I've attached a Word document to this project which explains what changes and help we need. We need everything working correctly.
Hi i am looking for someone who can code me a self purchasing bot for such websites as supreme, off white, dover street...select the colour and the size of the item, a captcha bypass/harvester, a time setter where it can be allocated a time and date for it to start running and finally a self checkout option. look up 'CyberAIO' for inspiration. Thanks
...custom icons and the same text as this one have: [log ind for at se URL] It should have the same text, but the icons should be designed. GUARANTEED SAFE & SECURE CHECKOUT McAfee SECURE, VISA, MasterCard, AMERICAN EXPRESS, DISCOVER, PayPal icons Buyer Protection Full Refund if you don't receive your order Full or Partial Refund, if the
I have woocommerce where I need some small changes on checkout page. Also, I have a lot of small other task if you are interested in future regular work
Complete the points on the attached document.
Found this plugin: [log ind for at se URL] - needs to work like there is an extra "checkout Button" for purchasing with one click - i need to see design - before implementing on site (and - it should be done on test site, before implementing)
I need my checkout page designed in 1.9 Magento . Only serious freelancers !
Have design and concept ready for checkout page. Need a developer who can code the checkout page. The website is built on woocommerce engine with kinsta hosting. Looking to get this done quickly.
We want a quiz website created. The design of the site can be basic. We will provide a logo. The web application should be written in classic ASP with a SQL Server back-end. We should be able to enter unlimited quizzes into the database. Key functionality includes: * A Homepage that shows available quizzes (quiz headline and corresponding image)
...paging problem written in lcassic ASP It works with MSSQL but when the data becomes to much , it times out. I would like a coder to take my cod and refine it with Ajax so that the query executes and loads the data required only for each paging function. Attached is the Database tables used and also the classic ASP page as coded for paging. Implmenting
...oder hat Fehler. In diesem Fall gilt es, den Fehler zu finden und zu beheben. Wie bereits erwähnt geht es dabei um Shopify. Genauer gesagt geht es darum, die Versandseite im Checkout für eine bessere Conversion zu überspringen. An sich ist das eine eher kleinere Aufgabe, die aber eine solide Know-How Basis bezüglich Javascript abverlangt....
...oder hat Fehler. In diesem Fall gilt es, den Fehler zu finden und zu beheben. Wie bereits erwähnt geht es dabei um Shopify. Genauer gesagt geht es darum, die Versandseite im Checkout für eine bessere Conversion zu überspringen. An sich ist das eine eher kleinere Aufgabe, die aber eine solide Know-How Basis bezüglich Javascript abverlangt....
A small bug in the post_data in the checkout system. Need someone to fix it.
Hi, I would like to hire a freelancer that able to do "One Page Checkout for WHMCS". Please refer to the attachment "[log ind for at se URL]" for the checkout page that i will expect from this project. My domain registrar are using "[log ind for at se URL]" to get more info. Please refer to the attached for the "[log ind for at se URL]" file...
We run at online store on Magento CE 184.108.40.206 The guest-checkout is not working, as there's password-popup page (to fix) We also need to change our default admin path The above need to be done in the next 4-8 hours
Hello. I need the following for my website [log ind for at se URL]: 1) Custom Web Form and Checkout Page: This form needs to be like the one made from Jotform here: [log ind for at se URL] (Also, see attachment) 2) Client Portal (attached to web form): After purchase, clients should be able to log back in their account and see their purchase
The idea is when someone goes to checkout that all the options appear and the choose 1 and then the page navigates to the respective fill in the information sections for that particular PAYMENT 1. PAY WITH DEBIT OR CREDIT CARD 2. PAY WITH PAYPAL 3. PAY WITH AMAZON PAY 4. PAY WITH GOOGLE PAY 5. PAY WITH UNITED STATES POSTAL MONEY ORDER 6. PAY VIA
I need to convert a web application from Classic ASP to ASP.NET (MSQL database). Application is used to see a list of Supplier, must be possible to edit the Masterdata of Supplier and is a specific section there must be the chance to evaluate the Supplier with a number from 1 to 10. User access to the application must be based on Windows Authentication
I need a new website. I already have a design, I just need you to code a landing page and code the checkout.
Need complete referesh and best user engaging design for my checkout process. We do not want our website complete rededesign but we want to get best refereshed and responsive design of our checkout process. Our checkout process is multi step checout process, and even in our new design it should be multi step, all we want is good color combination, easy
I lost the customization of the Checkout page and Chart of Woocommerce due to an update. I have all the files and data base backed up.
We are looking for a javascript developer that can implement the Adyen checkout on our website. Documentation of Adyen is here: [log ind for at se URL] Squarespace documentation for 3rd party code is here: [log ind for at se URL]
go to my site [log ind for at se URL] add some product to cart and go to checkout and go to pay. the problem its that all page keeps loading and we cant work. see attachment
Hey looking for a developer with ruby on rails to update our Hubtel ([log ind for at se URL]) payment checkout to version 2. our checkout on our site was working fine till Hubtel updated their checkout to v2. 1. update checkout to v2 2. 1 day-----finish , test and complete everything before end of tomorrow.
Hello, I need to do a checkout page for my website. [log ind for at se URL] Project time maximum 3 days since I hire you. 1. User Login - Registration 2. Add Books To cart, update cart, shipping calculation 3. Cart & Checkout 4. Payment Gateway Stripe 5. Add Mobile Friendliness Database design Admin Panel Customer Panel Payment Gateway Database
how to select product option on checkout page in opencart
I need someone to create a box for a customer to select a Federal Firearm Licensee (FFL) if they purchase a firearm off of my site. The customer should be able to select a FFL by using his/her zip code. If the customer already has a FFL then they should be able to enter the information in the shipping section. I am currently using the Prestashop platform. I am ONLY interested in a flat rate fee fo...
I am in need of a auto checkout program that provides proxy support for various tasks I can edit those tasks simultaneously with one button edit One that can have an area where I can input a password if the site contains one That can run automatically without me being there That can have an option to change refresh rates so that I will not get
I need a quick website where I can take credit cards via PayPal
...ability to add a promotion code to existing invoices 10 > Giving customers the ability to download their invoice when not paid yet 11 > Rearrange payment methods 12 > 1 page checkout 13 > Phone number has to be required when buying or creating an account 14 > Charge people a small fee when paying with PayPal or Debitcard 15 > Move the newsletter bar Backoffice
...developer to create a software that enables users to purchase a specific product on a website by matching images or keywords to the website. This program will allow users to checkout seamlessly, with integrated functions that allow the user to purchase goods extremely quickly. Essentially, the program will allow the buyer to place buy orders without
...am looking for an automation checkout software to be developed for our team the software must be super advanced and highly professional and be hosted on a server of which only selected people can access and use - the code must be A*class and work perfectly to our requirements must have previous experience with checkout software please no time wasters
We need a platform that to be Build preferable SAAS based . It will have very simple function - 1. It will show information of users on Page 1 (Product Demo Page, Blog Page, Sales Page) about those users who went to Page 2 (Product access Page, Blog Page, Membership area) with a popup so that Those who are on Page 1 get information that Who are the recent buyers/visitors/members. 2. This popup ...
Hi Need custom checkout page for woo commerce, find attached pdf for the same Need cod verification with otp to telephone number Thanks
Two requirements 1. Create custom field in the checkout page with image (Pls refer to [log ind for at se URL]) 2. When select Pickup in the checkout page, the shipping address will be hidden and a drop down list will show instead. (Pls refer to [log ind for at se URL])
- Amend the checkout workflow in woocommerce - Copy the exact google map and workflow from the below sample site [log ind for at se URL] - Implementation site [log ind for at se URL]
here is our ecommerce shop: [log ind for at se URL] we want the checkout page look like this one: [log ind for at se URL]
-Validate mobile number [log ind for at se URL] (it should be 0912 345 6789 11 digit starts with 0) -Validate cash on delivery based on servicable areas in the excel file -shipping fee is calculated based on province field, if province field is Metro Manila, shipping fee is 45. If province field is not Metro Manila, shipping fee is 135. -Dependent option for city and barangay. City depends o...
I want to add a pop up stating to customers that if they purchase $500 and more in their cart, they receive free shipping, also any additional item f...their cart, they receive free shipping, also any additional item for no addtional shipping charges. During the check out process, I want to be able to link to facebook and google and such social media.
The WordPress Woocommerce cart and checkout page we have for our site is not laid out properly. We need a developer to adjust the look and function of these pages to our requirements. We need it to look like the attached image ([log ind for at se URL]). These pages must also be responsive and must be made in a way so when Wordpress and Woocommerce are updated


text:
posted by Thom Holwerda on Sat 11th Mar 2006 21:22 UTC
SGI is not very willing to communicate about any strategic changes it is plannign to make in their product line up. "Thankfully, we happen to know a couple of SGI's largest customers - the kind of folks who actually receive information from the graphics beast. In order to help out the rest of you poor, informationless sods, we're going to don SGI's marketing cap for the moment and get out the good word to customers large and small. Here's where SGI is heading according to the insiders."


text:
Junior forward Garret Pettis was named A-Sun First Team All-Conference. Senior forward Miguel DaSilva is an A-Sun All-Conference Second Team pick. Defender Kevin Barbar was named to the A-Sun A-Freshman Team.
Pettis is rated 55th nationally in NCAA Division I in goals with seven and is 75th in points with 17.
He is tied for second overall in the A-Sun in goals and is fourth in goals per game with .41. In A-Sun games only he is second in points with 10 and tied for third in goals with four.
DaSilva is rated 87th nationally in goals with six.
He is tied for sixth overall in the A-Sun with six goals. He is tied for second overall in the conference in game-winning goals with three.
Barbar has scored two goals on two shots on goal with the game-winning goal at Belmont Oct. 14 and the only goal scored by the Bisons in a 2-1 overtime loss to ETSU Oct. 24.


text:
Honoring our veterans
The Big Spring VA Medical Center, joined by Howard College, tipped their collective hats to all area veterans Friday during the annual Community-wide Veterans Day Program at the Dorothy Garrett Coliseum.The program included patriotic music provided by the Moss Elementary School Choir, Coahoma Choir Kids and Howard College Hawk Jam ensemble, with presentation of the colors done by the Goodfellow Air Force Base Honor Guard.Invocation for the event was provided by U.S. Army veteran Robert Underwood. The event featured a number of speakers, including Dr. Cheryl Sparks, president of Howard College."Today, I also want to welcome you on behalf of our veterans. We have many veterans who are part of the Howard College family, employees and students," Sparks said. "We appreciate them for what they do on a day-to-day basis and what they have done for us in the past."We all have a different story about veterans, about people who have served. Some of the younger people in the crowd, you may not have your story yet, but you will. Because, as life goes on, someone you know and love will serve and they will serve with great honor. So, you are getting a sort of head start, because you are helping to honor people who have served and you'll have a better appreciation when the day comes for the ones you know and love to serve."Daniel Marsh, director of the West Texas VA Health Care System and a veteran of the U.S. Air Force, also spoke, saying the sacrifices made by all veterans — as well as family members of veterans — is nothing short of tremendous."To say the contributions our veterans have made to our country are tremendous would be a complete understatement," Marsh said. "Many of our brave Americans have served their country for years in the military, while some served for two, three or even four years. As an Air Force veteran, I served for four years and I enjoyed it. I had many different assignments and served during Vietnam."Their sacrifices are tremendous. As you heard, many of them made the ultimate sacrifice and cannot be with us anymore. We especially want to pay tribute to those veterans who paid that price. They are the reason we have so much freedom and enjoy living in such a great country. It's a true privilege to be here today."Keynote speaker for the ceremony was Big Spring's own Jerry Worthy, a veteran of the U.S. Air Force who was instrumental in the renaming of the local VA Medical Center to the George O'Brien VA Medical Center. Worthy was also a driving force in the effort at the turn of the century to save the historic Hangar 25, which would later become the Hangar 25 Air Museum.Worthy said today, veterans are revered through most of the country, complete with parades and other pleasantries when they return home from battle. Unfortunately, for veterans of the Korean and Vietnam wars, such revelry hasn't always been the standard."Now days, veterans are appreciated and respected, many more than ever," Worthy said. "Those of us (who served during) the Korean and Vietnam wars know that all-to-well. My mother and father picked me up in California after I returned from being stationed at Kadena Air Base in Okinawa. I had been flying bombing missions over North Korea. Somewhere along the ride home, in Colorado, we heard the peace treaty had finally been signed. That night at the hotel I dressed up in my uniform and put on all the shiny things I could find and went downtown to celebrate. However, everything was closed. It seemed no one was aware of what was going on. I returned to the motel, I suppose a little dejected."There was no ticker-tape parade to end the war, and you know, anytime you get shot at, it's a war. Today, our service to our country is more recognized and it's because of the great folks today that is happening. We owe much to our veterans today, respect and care. Because they not only offered to fight the wars that threatened our country as their patriotic duty, but because of the impact it had on their families and careers and the time they took out of their lives to do it. All too often, the time it takes to recover our status and adjust to a productive civilian life. Sometimes it is not easy."Worthy extolled the value of the local VA Medical Center, as well as the support of a grateful nation and family members, deeming those helping hands as inspiring."Our lifeline is the VA Medical System, provided by a grateful nation. Our economy and our country are stronger because of this," Worthy said. "So now, on this great day for veterans, I say any veteran should be called an American-plus. We just did our duty, but those at home did just as much for providing and inspiring that duty."


text:
AUBURN � Standard & Poor's Rating Service has given the town its highest bond rating ever for $11,040,000 of general obligation bonds, according to Town Manager Julie A. Jacobson.
The ratings agency assigned its AA+ rating to the town for the bonds, and also assigned a SP-1+ short-term rating to the $10 million of the town's bond anticipation notes to be issued on April 1. The ratings are expected to mean a lower interest rate for taxpayers.
The AA+ rating is one step from the highest rating, AAA, that a municipality can receive.
Ms. Jacobson said the ratings service cited the town's recent adoption of strong management practices and long-range financial forecasting of both revenue and expense for operational and capital budgets. The service also noted the town's "very strong liquidity," "very strong economy," "very strong budget flexibility," "strong budgetary performance," "strong management conditions," "strong debt and contingent liabilities" and "good financial policies and practices that are embedded and sustainable," Ms. Jacobson said.
"This is a true team effort which includes all department heads, the Board of Selectmen, the Finance Committee and town meeting, who have supported management's financial recommendations," she said.
She said the town sought a rating from Standard & Poor's this year to reflect changes the town administration has made since the charter amendment in 2009 and a reorganization in 2011 that included new financial policies, cost-saving reforms, new management practices, and operational restructuring.
"The town manager and the entire financial management team should be commended for this historic rating," said Auburn's chief financial officer, Edward Kazanovicz. "This rating speaks volumes about management's unwavering commitment and accomplishments in improving the town's financial strength and stability."


text:
posted by Thom Holwerda on Mon 2nd Jul 2012 18:19 UTC, submitted by anonymous
Michael Lotz added code to generate QR-code for the KDL (Kernel Debug Land) ouput (which pops up when the kernel crashes). No more blurry photos with debug output, but a QR code which decodes to the clear-text KDL debug output. Here's one of the relevant commits, an example showing a QR code, and text from decoded sample QR code.


text: I am currently working on getting my 2 month old son to nurse without a shield. We sometimes have minor successes (a minute or two latched with no shield and no hysterics,) but mostly he shrieks until I break down and put the shield back on. Tears all around. Has anyone else been through this? Does it get easier? Friends keep telling me I need to just throw the shield out and force him to quit it cold turkey, but I can't do that to him... He gets so upset. And every day that we continue using the shield I worry that we are going to be dependent on these stupid things forever. I would appreciate any tips or reassurances from anyone who has been through this!


text: Rebecca, wouldn't you think that any pitch memory in the motor systems of the voice, if it does exist, must have been mediated via the auditory system? Martin ----- Original Message ----- From: Rebecca Mercuri <firstname.lastname@example.com> To: <email@example.com> Cc: <email@example.com>; <firstname.lastname@example.com> Sent: Tuesday, May 08, 2001 5:08 PM Subject: Re: AP in all of us? New evidence from speech research > In the days when there used to be more "jingle" type ads on TV, > if you asked a kid to sing the commercial, they'd typically sing > it on or very close to the original pitch the ad was in. I recall > some years ago reading or hearing about a study where the popular > acapella baseball songs (ones not prompted by the stadium organist) > were surveyed and folks around the US sang those at the same pitch > as well. > > My personal theory is that it's a physical memory -- song singing > involves the muscles (or whatever they are) in the throat/larynx > and there's probably some feedback that provides a form of pitch > memory as in "that feels like the comfortable singing pitch I > know for that song." Anyone know of any work on that angle? > > Rebecca Mercuri, Ph.D. > >


text:
Yes, yet another mod which plays sound clips and gets others in your party/raid who also have the mod installed to play them at the same time. This started as a guild joke project, but I've put a bit of engineering into it so thought I would release it to the wild.
Current sounds: You're the best...around, Eye of the Tiger x 2, Llama song x 2, bananaphone, firemaw chant, some Aliens sounds, some MP and the Holy Grail sounds, failure to communicate, crickets (inside joke), Benny Hill x 2, leeroy, thundercats, he-man, bringoutyourdead, repressed, violence inherent in the system, spam, deliverance (dueling banjos), A-team sounds, top gun sounds, khaaan!, bowie, jackass, zombo.com, S.U.N., Macho Man, All your Base, spaceballs, the tick, fast times, rickroll, tase, tunak, tunak2, desert, conan, chumba, ghostbusters, llcoolj, ufo****, better off dead.
to use, type: "/rsa [sound]", for example "/rsa llama"
for the list of all available sounds (and other commands), type: "/rsa"
other options: load (enable|disable), raid (enable|disable), death (enable|disable)
also, specific sounds can be enabled or disabled.
e.g. to disable, type "/rsa load disable"
to disable only during raids, type "/rsa raid disable"
to disable the death sound, type "/rsa death disable"
to disable a specific sound (say, the llama sound), type "/rsa llama disable"
Idea and some sounds stolen shamelessly from http://www.curse-gaming.com/en/wow/addons-1930-1-leeroyhillcatspower.html , but I've more or less completely rewritten it.


text:
Department of Revenue News Release
October 01, 2009Agents Named for Aurora, Belton, Malden, St. Clair, Shelbina and Vandalia License Offices
JEFFERSON CITY - Management contracts for six more local motor vehicle and license offices were awarded today using a reformed competitive bidding process that has been implemented by Gov. Jay Nixon and supported by bipartisan majorities in the Legislature.
"The old process of awarding license offices in secret and with no consideration to customer service has been terminated," Gov. Nixon said. "We now have a transparent system that embraces open competition, and which puts an emphasis on customer service and fiscal efficiencies for the state and all of the local offices."
The six offices awarded this week are in Aurora, Belton, Malden, St. Clair, Shelbina and Vandalia. All of the offices will remain at their current locations. Bidders also have the option of returning a portion of the office's revenues to the state. Two of this week's winning proposals chose to return some of their revenues to the state. The cumulative amount of funds that will be returned to the state in the first contract year from the 100 offices that have been awarded so far under the reformed bidding process is $525,706.
Denise Sumners of Aurora will continue to be the agent for the Aurora License Office, which is at 316 E. Church St. She has held this position since 2005, and she was the only person to submit a bid. As part of her bid, Sumners will return 1 percent ($883) of the office's estimated first-year revenues to the state.
The Belton License Office has been awarded to Meador's Professional Service, which is associated with Karen Meador of Peculiar. Meador is a new agent for the office, which is located at 325 Main St. Four bids were submitted for the office. One percent ($2,861) of the office's first-year revenues will be returned to the state.
James G. Burrow of Malden is the new agent for the Malden License Office. Burrow, who was the office agent from 1989 to 2005, submitted the only bid for the office, which is located at 106 W. Laclede St. No return to the state was included in the bid.
The St. Clair License Office will continue to be run by the St. Clair Chamber of Commerce, which has operated the office since 1981. One bid was submitted for the office, which is located at 920-F St. Clair Plaza Dr. No return to the state was included in the bid.
Tim's Home Center, LLC has been awarded the contract for the Shelbina License Office. The company is associated with Susan Neely of Lentner, who has been the incumbent agent since 2005. The office is at 201 Fairground Rd. No return to the state was included in the bid, which was the only one offered for the office.
The Vandalia License Office will continue to be operated by the City of Vandalia. The city has run the office, which is located at 200 E. Park St., since 2008. The city's bid was the only one offered, and there was no return to the state in the bid.
Details about any changes in office operations, if any, will be announced by the agents.
Although Gov. Nixon authorized the Missouri Department of Revenue to implement the new bidding system in January, it didn't become part of state law until legislation was signed by the Governor this past summer. The new law was overwhelmingly approved by both Republican and Democratic members of the Missouri Legislature.
Of the 100 offices awarded so far, 54 have gone to incumbents or been awarded to family members of incumbent agents. Forty-six of the offices have been awarded to new agents. Of the 183 total offices, bidding has closed on 181, and two remain open for bidding. For a list of winning bidders for license offices, please go to http://oa.mo.gov/purch/awardedfeeoffices.pdf.
Alana M. Barragán-Scott, acting director of the Missouri Department of Revenue, noted some of the criteria that are evaluated when the department rates the bids.
"The experience of the agent - whether it has been running a license office or other business experience - is one thing we evaluate," Barragán-Scott said. "We also look at plans for customer service, especially during busy times of the month, and whether the office location itself is accessible and secure. When these and other factors are considered, a winner is then chosen. The real winners, however, are the future customers of the offices because even incumbent license office agents now have an incentive to improve customer service and make the office more efficient."
All local license offices provide services that are overseen by the Department of Revenue, but each office is operated by an independent contractor. Transactions that are conducted at these offices include the issuance and renewal of driver licenses, issuance of titles for motor vehicles, and the issuance and renewal of registration for motor vehicles, boats and outboard motors.
Additional information on the bids will be posted by the Missouri Office of Administration within the next few days.


text:
the Editor, SeniorInsider | Jun 01, 2011
START HERE: Find Housing
Get Your FREE
My father had to move out of the retirement community he was living in. I didn't know what to do. I found a new one in the same city with an opening the very same day on SeniorInsider.com. Thanks!
I was in need of resources for caregivers and stumbled on your site. You answered a lot of the questions I had about taking care of my aging mother. What a wealth of knowledge, all in one place.
I saved so much time thanks to your valuable resources on this site. We need more resources like yours on the Internet. I'll be sure to refer anyone who is looking for senior related information to you.
I was having a tough time understanding all the legal issues (probate, trusts, living wills, etc.) until I found SeniorInsider.com. You put everything into terms that I can easily understand.
John R
If you'd like to receive FREE information on a range of topics of interest to seniors, fill out the form below:
Receive a Free Senior Living Insders Guide!
Receive periodic news relating to active senior living!
Get money saving deals and Special Offers for Seniors!
© 2012, Senior Insider.com. All rights reserved.


text:
Having a conversation with a guildie and a raid leader from another guild this week made me realize I am not the only one having so much fun with the current content.
One of them is a very experienced player and the reason I have seen so much of ICC (I healed all the way up to professor last night), the other is a player that is raiding with us primarily but can know do a raid with any group on our server.
They both come from totally different spectrums in the play world of raiding from casual to hardcore and they are both having a blast with raiding the content that is in WoTLK.
The old time raider like me admires the work that has been put into encounter mechanics. How every fight and every pull requires slightly different skill, and mobility and targeting is not just something a couple of people have to be good at, but everyone has to do or the fight is over before it even starts.
The new raider is looking at the raid world for the first time and appreciating that our raid group is both patient and skilled. We don't carry people, everyone works hard and that way all of our accomplishments feel earned. We try to bring everyone up to par, even if some of our DPS people are just getting outrageous and being able to count as two people… lol
Our guild has conquered several hard modes now, a couple of us got our Heroic Drakes, most now are wearing the Champion of the Frozen Waste and Nightfall titles. While a lot of it can be attributed to gear being so easy to obtain, I still see pugs fail in completing content constantly. While a lot of is puggable by many, you still require some skill to accomplish things. Just try to run VoA during the weekend and you will see what I am talking about (how hard is it to switch to the orbs – I have no clue because I only tank or heal). Putting those skills to test makes it fun, being with a group of friends makes it even better.
As a guild we have completed all of Naxx with almost every 80, 3 different 10 mans have now done EoE, we area about 8 bosses deep into Ulduar and complete ToC every week. I think this week we will get past CapnCrunch in ICC, and once we are done assisting on the 25 some of us have been lucky enough to take part of, I think we can bring the knowledge back and have a consistent 10 man doing ICC. We are not at the cutting edge of progresssion, but don't be fooled by people that think that killing Arthras is simple, even with a 10% buff now. Only a small percentage of people is attempting hard modes at the moment in ICC, several groups are hitting walls in either healing or DPS.
Our group? We are enjoying the content that is both fun and challenging. Sure the shinny purples are pretty, but things like beating a boss tanks to a well placed bandaged can only be enjoyed with a fun group of people! Happy Raiding Saints!


text:
Topic: Music that messes with your Head
Woe! is bats I had to watch this show , 20 to 1 ,,this weeks topic
was ONE HIT WONDERS now ,,Thank you ,,Not,!!! now I have
buzzing around my Head
I'm Too Sexey for my Shirt
Don't Break my Heart my Acky Breaky Heart
It is so cruel putting on those One Hit Wonders
Now you have read these Songs they start messing with your
Brain LOL!!!