Angel \”Java\” Lopez on Blog

March 7, 2013

Uncle Bob: Links and Resources (1)

Lot of interesting post about programming. And about one of my favorite topic: TDD, Test-Driven Development:

The Start-Up Trap | 8th Light
http://blog.8thlight.com/uncle-bob/2013/03/05/TheStartUpTrap.html

Clean Coders, Liskov
http://www.cleancoders.com/codecast/clean-code-episode-11-p1/show

Keynote: Architecture the Lost Years – Robert Martin – Ruby Midwest 2011
http://www.confreaks.com/videos/759-rubymidwest2011-keynote-architecture-the-lost-years

NO DB | 8th Light
http://blog.8thlight.com/uncle-bob/2012/05/15/NODB.html

Skills Matter : In The Brain of Uncle Bob (Robert C. Martin)
http://skillsmatter.com/podcast/agile-testing/uncle-bob-expert-insights/wd-23

ArticleS.UncleBob.ThePrimeFactorsKata
http://www.butunclebob.com/ArticleS.UncleBob.ThePrimeFactorsKata

Flipping the Bit | 8th Light
http://blog.8thlight.com/uncle-bob/2012/01/11/Flipping-the-Bit.html

The Barbarians are at the Gates | 8th Light
http://blog.8thlight.com/uncle-bob/2011/12/11/The-Barbarians-are-at-the-Gates.html

The delivery mechanism is an annoying detail – Coding the Architecture
http://www.codingthearchitecture.com/2011/11/06/the_delivery_mechanism_is_an_annoying_detail.html

Skills Matter : In The Brain of Uncle Bob (Robert C. Martin)
http://skillsmatter.com/podcast/agile-testing/bobs-last-language/js-2958

Simple Hickey | 8th Light
http://blog.8thlight.com/uncle-bob/2011/10/20/Simple-Hickey.html

Scrum Alliance – The Land that Scrum Forgot
http://scrumalliance.org/articles/300-the-land-that-scrum-forgot

Amazon.com: Agile Principles, Patterns, and Practices in C# (9780131857254): Robert C. Martin, Micah Martin: Books
http://www.amazon.com/Agile-Principles-Patterns-Practices-C/dp/0131857258

The Transformation Priority Premise – Uncle Bob’s Blog
http://cleancoder.posterous.com/the-transformation-priority-premise

What Killed Waterfall Could Kill Agile. – Uncle Bob’s Blog
http://cleancoder.posterous.com/what-killed-waterfall-could-kill-agile

OmelasBlog: Lo que mató a Waterfall podría matar a Agile
http://blog.omelas.net/2010/11/lo-que-mato-waterfall-podria-matar.html

Best In Class: Taking Uncle Bob to school
http://www.bestinclass.dk/index.clj/2010/10/taking-uncle-bob-to-school.html

Clojure with Uncle Bob
http://www.financialagile.com/reflections/8-software/21-clojure-with-uncle-bob

gist: 632303 – Prime factors Kata in Clojure- GitHub
http://gist.github.com/632303

Best In Class: Taking Uncle Bob to school
http://bestinclass.dk/index.clj/2010/10/taking-uncle-bob-to-school.html

Uncle Bob Martin’s "Clojure – Up Close and Personal" on Vimeo
http://vimeo.com/15046335

The Clean Coder: Why Clojure?
http://thecleancoder.blogspot.com/2010/08/why-clojure.html

YouTube – RailsConf 09: Robert Martin, "What Killed Smalltalk Could Kill Ruby, Too"
http://www.youtube.com/watch?v=YX3iRjKj7C0

ArticleS.UncleBob.TheThreeRulesOfTdd
http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd

InfoQ: Craftsmanship and Ethics
http://www.infoq.com/presentations/craftmanship-ethics

My Links
https://delicious.com/ajlopez/unclebob

January 25, 2013

SimpleTags (1) First Ideas

Filed under: JavaScript, NodeJs, Programming, SimpleTags — ajlopez @ 4:52 pm

More than a decade ago, I wrote the basis of my personal site, based on having heterogeneous items (links, pages, etc..) classified into categories (a tree of categories). An item could be into more than one category, and one category could be an alias for another. But after using Delicious and Gmail, now I prefer to have items grouped by tags. And instead of having categories and category tree (like folders), I think that a more flexible organization could be based on predicates over tags: that is, instead of having a Category Programming –> C#, I could have a predicate that returns all items tagged with “programming” and “c#”. Sometimes, I need key-value tags, like “author:unclebob”, or “project:storm”.

So, some days ago, I started a new project, written in JavaScript/Node.js, named SimpleTags:

https://github.com/ajlopez/SimpleTags

From the readme:

var itemId = engine.createItem('http://nodejs.org', [ 'nodejs', 'javascript', 'engine', 'programming' ]);

An item has

  • data: Arbitrary value you supplied
  • tags: An array of tags. A tag could be a non-empty string or an object with only one property with non-empty value.

Once created, the item has an associated id, supplied by the engine.

The project has an in-memory model. A set of tags can be associated to an arbitrary data item. Usually, you don’t associate all customer data to a set of tags; instead, you could associate a customer id. The arbitrary data could reside in your database or it could an URL, or something else. The key feature is: you can associate an item to a set of tags, and retrieve items with given tags.

Think about this: you could have a huge link collection, and use SimpleTags to organize it. Or documents, instead of links. Or photos/images. You could use tagging for different purpose. It’s a powerful idea to be applied in many domains and scenarios.

I think to add a web site as a concrete use case, where you can add URLs and tag them, define “Categories” using tag predicates, explore the defined categories, and search items by tags. After this sample, I could implement something more concrete, like a tagged to-do list, or a list of tasks tagged by project, status (pending, closed, …), iteration, assignee, etc. I used a similar private app for tracking agile project backlog in one of my customers, and I feel it’s a good test bed case to be tackled by my tag engine project.

It could be used as an excuse to learn Express or to use my SimpleWeb project. In any case, it will be fun :-)

As usual, SimpleTags code was written using TDD.

Keep tuned!

Angel “Java” Lopez

http://www.ajlopez.com

http://twitter.com/ajlopez

November 6, 2012

New Month’s Resolutions: November 2012

Review of my past month’s resolutions:

- Give a talk about programming languages in Javascript [complete] see video (Spanish)
- Give a talk about Node.js/Socket.io realtime web applications[complete] see post (Spanish)
- Work on PythonSharp [complete] see repo
- Work on AjTalk for Java [pending]
- Work on AjConsorSite [partial] only demo and meetings
- Work on GameServer [partial] only demo and meetings

Additionally, I worked on:

- My Node samples [complete] see repo
- Cellular automata (Javascript/Node.js) [complete] see repo
- Minor improvements in AjTalkJs and AjLispJs
- Started my Basic Script (for Javascript/Node.js) [complete] see repo
- Started my port of AjGroups (finite groups) to Javascript/Node.js
[complete] see repo

For this new month:

- Work on PythonSharp
- Give a talk about Implementing Python at PyCon 2012 (Argentina)
- Work on AjTalk for Java
- Work on AjTalk for Javascript
- Work on BasicScript (I want to use it in an example for my GameServer project)
- Start .md pages Java tutorial (Spanish)
- Start .md pages Node.js tutorial

Keep tuned!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

July 26, 2012

TDD and Business Rules (1)

Filed under: C Sharp, Programming, Test-Driven Development — ajlopez @ 2:31 pm

This month I was working in an agile team, developing a non-public system. One interesting feature was that the system allows the creation and existence of domain entities with “invalid” states. That is, they are “invalid” in context: the product owner wants to build a flexible system that reflects the business reality, instead a more strict one that avoids the “invalid” states. But he wants to see which are the current “invalid” states, so the system can generate and show a list of Findings (that is the term we use in the system).

I want to explore the “TDD way” to build such feature. To be more specific, I will describe a similar domain with simplified findings.

Let be an Order. The Order has one or more Order Items. Each Order Item has a Product, Quantity, Price. Each Order has a Customer. There are business rules that describes what are the “invalid” states. Some examples:

- An Order for a Customer category Y cannot have a total amount > X.
- An Order must have one or more Order Items.
- Order Items should have Quantity > 0.
- Order Items should have Price > 0.
- Product P should have Quantity > Minimal Quantiy in each Order Item.
- Product P has a Price, and its Order Items cannot have a Price < Product Price * 0.80.
- and so on…

So, Order can be created and stored having state that broke some rules. It’s OK. The Order is NOT refused by the system. Product Owner wants to have (at any moment) the list of broker rules, the Findings.

The business rules can change, and new ones can be defined. It’s not defined how to do this (maybe, adding code, or writing an expression, Product Owner doesn’t care yet). In the initial version, the business rules can be fixed. In a second version, some rules can be applied to some orders (i.e., some rules could be applied to Orders where their customers are in Canada). Product owner wants to have: findings per order, findings per product, findings per customer.

Then, in this post series, I will show a way to build the proposed applications, using TDD. To simplify the example, no UI or persistence will be used: only domain objects and their relations in a graph. I want to explore how, using TDD, the rules and their execution emerges from the simple use cases. I will use a GitHub project, and .NET with C#.

Keep tuned!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

June 28, 2012

Parallel Programming: Links, News And Resources (3)

Filed under: Concurrency, Links, Parallel Programming, Programming — ajlopez @ 4:55 pm

Previous Post

Concurrent Programming Using The Disruptor
http://www.infoq.com/presentations/Concurrent-Programming-Using-The-Disruptor
Trisha Gee introduces Disruptor, a concurrency framework based on a data structure – a ring buffer – that enables fast message passing in a parallel environment.

Dataflow Programming: Handling Huge Data Loads Without Adding Complexity
http://www.drdobbs.com/go-parallel/article/231400148

Task Parallel Library and Servers, Part 1: Introduction
http://bradwilson.typepad.com/blog/2012/04/tpl-and-servers-pt1.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+BradWilson+%28Brad+Wilson%29
Asynchronous (multi-threaded) programming is not easy.
Asynchronous programming with .NET 4 is a little easier.
Asynchronous programming with .NET 4.5 is a lot easier.
The async and await keywords available in C# and VB on .NET 4.5 mean you get to consume Task Parallel Library tasks with code that looks linear and synchronous, but is in actuality asynchronous, with none of the callback handlers or thread synchronization stuff getting in the way.

Lang.NEXT Trip Report
http://bartoszmilewski.com/2012/04/06/lang-next-trip-report/
The two topics that stood out were: functional programming and DSLs. It seems like every language tries to assimilate some functional elements in order to deal with parallelism…

Pervasive Parallelism in Scala
http://channel9.msdn.com/Events/Lang-NEXT/Lang-NEXT-2012/Pervasive-Parallelism-in-Scala

UC: A Set-Based Language for Data-Parallel Programming
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.38.6672

Dr.Dobb’s Go Parallel
http://www.drdobbs.com/go-parallel/

STXXL: Standard Template Library for Extra Large Data Sets.
http://stxxl.sourceforge.net/

Parallel Implementations
http://www.altdevblogaday.com/2011/11/22/parallel-implementations/
by John Carmack

Models for distributed parallelism
http://lambda-the-ultimate.org/node/4405

Referentially transparent nondeterminism
http://pchiusano.blogspot.com.ar/2011/06/referentially-transparent.html

Solving the Shakespeare Million Monkeys Problem in Real-time with Parallelism and SignalR
http://www.hanselman.com/blog/SolvingTheShakespeareMillionMonkeysProblemInRealtimeWithParallelismAndSignalR.aspx

OpenCL
http://en.wikipedia.org/wiki/OpenCL
Open Computing Language (OpenCL) is a framework for writing programs that execute across heterogeneous platforms consisting of central processing unit (CPUs), graphics processing unit (GPUs), and other processors.

The Flow Programming Language: An implicitly-parallelizing, programmer-safe language.
http://www.flowlang.net/

Thinkin’ About Async
http://msdn.microsoft.com/en-us/magazine/hh456392.aspx

Pause and Play with Await
http://msdn.microsoft.com/en-us/magazine/hh456403.aspx

Go-flavored JavaScript
http://www.johntantalo.com/blog/go-flavored-javascript/

Parallel bars
http://www.economist.com/node/18750706?story_id=18750706
Computing: Parallel programming, once an obscure niche, is the focus of increasing interest as “multicore” chips proliferate in ordinary PCs

Welcome to Apache Pig!
http://pig.apache.org/
Apache Pig is a platform for analyzing large data sets that consists of a high-level language for expressing data analysis programs, coupled with infrastructure for evaluating these programs. The salient property of Pig programs is that their structure is amenable to substantial parallelization, which in turns enables them to handle very large data sets.

Parallel Data Warehouse News and Hadoop Interoperability Plans
http://blogs.technet.com/b/dataplatforminsider/archive/2011/08/08/parallel-data-warehouse-news-and-hadoop-interoperability-plans.aspx

Parallel Processing Using the Map Reduce Programming Model
http://blog.diskodev.com/parallel-processing-using-the-map-reduce-prog

The HPCC Systems Platform
http://hpccsystems.com/
HPCC (High Performance Computing Cluster) is a massive parallel-processing computing platform that solves Big Data problems. The platform is now Open Source!

My Links
http://delicious.com/ajlopez/parallel

Keep tuned!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

June 2, 2012

Functional Programming: Links, News And Resources (3)

Filed under: Functional Programming, Links, Programming — ajlopez @ 6:29 pm

Previous Post

Clojure interview: (take 5 daniel-spiewak)
http://clojure.com/blog/2012/04/19/take5-daniel-spiewak.html
Daniel Spiewak is a force of nature. As a highly respected member of the Scala programming language community and an overall thoughtful polyglot he seemed a natural fit as an interesting speaker for the 2011 Clojure/Conj. Daniel’s talk entitled *Extreme Cleverness: Functional Data Structures in Scala was highly energetic and astoundingly informative. Daniel’s open source contributions are not to be forgotten however. In addition to the important anti-xml Scala library, Daniel is attempting a bit of text-based collaboration magic with his Common Colaborative Coding Protocol project.

A Programming Language, Kenneth E. Iverson
http://www.jsoftware.com/papers/APL.htm
Much of applied mathematics, particularly the more recent computer-related areas which cut across the older disciplines, suffers from the lack of an adequate programming language. It is the central thesis of this book that the descriptive and analytic power of an adequate programming language amply repays the considerable effort required for its mastery. This thesis is developed by first presenting the entire language and then applying it in later chapters to several major topics.

mikeal / tako
https://github.com/mikeal/tako
Functional web framework.

Efficiency of purely functional programming
http://stackoverflow.com/questions/1990464/efficiency-of-purely-functional-programming

Learn about Efficient Functional IO in Scala from John De Goes’ Presentation at NEScala
http://marakana.com/s/learn_about_efficient_functional_io_in_scala_from_john_de_goes_presentation_at_nescala,1130/index.html

Great Lakes Functional Programming Conference About The Great Lakes Functional Programming Conference
http://glfpc.org/
May 5, 2012 in Ann Arbor, MI
http://glfpc.org/2012/05/11/slide-decks-code-and-photos/

Barb: How I built a simple dynamic programming language in F#
http://www.meetup.com/nyc-fsharp/events/57580992/
https://github.com/Rickasaurus/Barb

Dizzy Smith – Building Erlang Applications With Rebar
http://ontwik.com/erlang/dizzy-smith-building-erlang-applications-with-rebar/
Rebar is an Open Source project that provides a set of standardized build tools for OTP applications and releases. This talk will explore how to use Rebar in a typical development environment for everything from simple Erlang code to port drivers and embedded Erlang servers.

lambdaj
http://code.google.com/p/lambdaj/
manipulate collections in a pseudo-functional and statically typed way

Can Your Programming Language Do This?
http://www.joelonsoftware.com/items/2006/08/01.html

Axum Incubation Project
http://social.msdn.microsoft.com/Forums/en-US/axum/threads
"Erlang done right"

FP, Concepts, Scala, Haskell, Fp, Currying, Lambda, Higher Order Functions, Functional,
http://www.slideshare.net/diego.pacheco/fp-concepts

Functional IO in Scala with Scalaz
http://www.stackmob.com/2011/12/scalaz-post-part-2/

Concatenative, Row-Polymorphic Programming in Haskell
https://github.com/leonidas/codeblog/blob/master/2012/2012-02-17-concatenative-haskell.md

Refactoring Functional Programs
http://www.cs.kent.ac.uk/projects/refactor-fp/

scalaz
http://code.google.com/p/scalaz/
Scalaz: Type Classes and Pure Functional Data Structures for Scala

Why Concatenative Programming Matters
http://evincarofautumn.blogspot.com.ar/2012/02/why-concatenative-programming-matters.html

10 reasons to use the F# runtime in your C# app
http://bugsquash.blogspot.com.ar/2011/10/10-reasons-to-use-f-runtime-in-your-c.html

Validating with applicative functors and LINQ
http://bugsquash.blogspot.com.ar/2011/08/validating-with-applicative-functors.html

Functional Relational Programming with Cascalog
http://clojure.com/blog/2012/02/03/functional-relational-programming-with-cascalog.html

Scala for the Intrigued: Functional Style of Programming
http://pragprog.com/magazines/2011-12/scala-for-the-intrigued

My Links
http://delicious.com/ajlopez/functionalprogramming

Keep tuned!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

June 1, 2012

Functional Programming: Links, News And Resources (2)

Filed under: Functional Programming, Links, Programming — ajlopez @ 4:05 pm

Previous Post
Next Post

More links about this great topic:

Functional Style of Programming
http://pragprog.com/magazines/2011-12/scala-for-the-intrigued

Monads
http://homepages.inf.ed.ac.uk/wadler/topics/monads.html

The trouble with monads
http://fexpr.blogspot.com.ar/2011/12/trouble-with-monads.html

Functional Programming Exchange 2012
http://skillsmatter.com/event/scala/functional-programming-exchange-2012/ac-3451

Functional Thinking
http://www.infoq.com/presentations/Functional-Thinking
Neal Ford emphasizes the fact that functional programming uses a different way of solving a problem, thinking about the results rather than the steps to make.

Bind vs Curry in JS
http://josephmoniz.github.com/blog/2011/12/26/bind-vs-curry/

Lazy Functional State Threads (1993)
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.50.3299

2011 – The year that was
http://debasishg.blogspot.com.ar/2012/01/2011-year-that-was.html

Monad Transformers and Modular Interpreters (1995)
http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.17.268

Theorems for free! (1989)
http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.38.9875
From the type of a polymorphic function we can derive a theorem that it satisfies. Every function of the same type satisfies the same theorem. This provides a free source of useful theorems, courtesy of Reynolds’ abstraction theorem for the polymorphic lambda calculus.

Conduits
http://www.yesodweb.com/blog/2011/12/conduits

J Programming Language
http://www.jsoftware.com/source.htm

Sigplan APL
http://www.sigapl.org/

APL
http://groups.engin.umd.umich.edu/CIS/course.des/cis400/apl/apl.html
APL stands for “A Programming Language.” It was created in the 1960′s by Ken Iverson and his colleagues at IBM. Mathematically inspired, its main purpose was to serve as a powerful executable notation for mathematical algorithms. What APL is best known for is its use of non-ASCII symbols, including some Greek letters. It is a dynamically typed interactive, array oriented language with a dynamic scope. In APL, all expressions are evaluated from right to left.

Free APL Interpreters and Compilers
http://www.thefreecountry.com/compilers/apl.shtml

A Programming Language
http://www.users.cloud9.net/~bradmcc/APL.html

APL
http://www.thocp.net/software/languages/apl.htm
APL stands for “A Programming Language.” It was created in the 1960′s by Ken Iverson and his colleagues at IBM. The language was very much mathematically inspired and used a powerful notation for mathematical algorithms.

What Does Functional Programming Mean?
http://lambda-the-ultimate.org/node/4357

Sample applications for programming languages
http://lambda-the-ultimate.org/node/4356

Static single assignment form
http://en.wikipedia.org/wiki/Static_single_assignment_form

The Trouble with Erlang (or Erlang is a ghetto)
http://www.unlimitednovelty.com/2011/07/trouble-with-erlang-or-erlang-is-ghetto.html

Learn You a Haskell for Great Good!
http://learnyouahaskell.com/chapters

Functors, Applicative Functors and Monoids
http://learnyouahaskell.com/functors-applicative-functors-and-monoids

Continuations and Other Functional Patterns
http://vimeo.com/20293743

Unrestricted effects and nondeterminism in purely functional code
http://pchiusano.blogspot.com.ar/2011/07/unrestricted-effects-and-nondeterminism.html

Do (side) effects really need a total order?
http://pchiusano.blogspot.com.ar/2011/07/do-side-effects-really-need-total-order.html

JOHN BACKUS ON THE VON NEUMANN STYLE
http://davidbolton.net/blog/2011/12/04/backus-and-the-von-neumann-style/

Functional Programming For Java Programmer Scala Or Clojure?
http://www.nairaland.com/718309/functional-programming-java-programmer-scala

F#, MSTest, and FsUnit 1.1.0.0
http://blog.danielmohl.com/

An introduction to F#
http://aboutdev.files.wordpress.com/2011/11/an-introduction-to-fsharp.pdf

A Coder Interview With Dan Mohl
http://www.codeproject.com/Articles/277701/A-Coder-Interview-With-Dan-Mohl
Dan is a “Red Headed Code Monkey” and Microsoft F# MVP. Read on to learn more about his many coding exploits.

Appendo the Great
http://objectcommando.com/blog/2011/10/13/appendo-the-great/

Rust Programming Language
http://en.wikipedia.org/wiki/Rust_%28programming_language%29
Rust is an experimental, concurrent, multi-paradigm, compiled programming language developed by Mozilla Labs.[1] It is designed to be practical, supporting pure-functional, concurrent-actor, imperative-procedural, and object-oriented styles.

Functional Programming Doesn’t Work (and what to do about it)
http://prog21.dadgum.com/54.html

Clojure Getting Started
http://dev.clojure.org/display/doc/Getting+Started

Simon Thompson and Huiquing Li on Refactoring in Functional Languages Like Haskell or Erlang
http://www.infoq.com/interviews/thompson-li-refactoring
Simon Thompson and Huiqing Li explain refactoring with functional languages and Wrangler (Erlang) and HaRe (Haskell). Also: how Wrangler’s ad-hoc mode allows everyone to write custom refactorings.

My Links
http://delicious.com/ajlopez/functionalprogramming

More resources about programming languages are coming.

Keep tuned!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

May 18, 2012

Parallel Programming: Links, News And Resources (2)

Filed under: Concurrency, Links, Parallel Programming, Programming — ajlopez @ 8:26 am

Previous Post
Next Post

More links about this interesting topic. I think parallel programming is the way to explore new algorithms, specially in artificial intelligence and distributed computing.

Dryad – Microsoft Research
http://research.microsoft.com/en-us/projects/Dryad/

Ville Tuulos on Big Data and Map/Reduce in Erlang and Python with Disco
http://www.infoq.com/interviews/tuulos-erlang-mapreduce
Ville Tuulos talks about Disco, the Map/Reduce framework for Python and Erlang, real-world data mining with Python, the advantages of Erlang for distributed and fault tolerant software, and more.

ICSE 2011: Danny Dig – Retrofitting Parallelism into a Sequential World
http://channel9.msdn.com/posts/ICSE-2011-Danny-Dig
Dr. Danny Dig is a Principal Investigator at the Universal Parallel Computing Research Center (UPCRC Illinois). UPCRC’s stated mission is to make parallel programming synonymous with programming.

Patterns for Parallel Programming: Understanding and Applying Parallel Patterns with the .NET Framework 4
http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=19222
A document providing an in-depth tour of implementing a variety of parallel patterns using the .NET Framework 4.

Haskell: First results from GHC’s new garbage collector
http://hackage.haskell.org/trac/ghc/blog/new-gc-preview
For a number of months now, we have been designing and developing a new garbage collector for GHC, with the primary goal of improving scaling on multicores.

Actor-based Programming
http://www.infoq.com/presentations/Actor-based-Programming
Jamie Ridgway explains what actors are, why we need them, what they are helpful for, the languages built around this programming paradigm, along with some demos showing actor-based apps.

Functional Programming eXchange 2011: Simon Peyton Jones on Managing parallelism: embrace diversity, but control side effects
http://skillsmatter.com/podcast/scala/talk-by-haskell-expert-simon-peyton-jones
If you want to program a parallel computer, it obviously makes sense to start with a computational paradigm in which parallelism is the default (ie functional programming), rather than one in which computation is based on sequential flow of control (the imperative paradigm). And yet, and yet … functional programmers have been singing this tune since the 1980s, but do not yet rule the world.

Articles on Parallel Programming with the .NET Framework 4
http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=12594
A set of articles that provide information on parallel programming with the .NET Framework 4.

Dynamic parallel async requests in MVC
http://petemontgomery.wordpress.com/2011/05/12/dynamic-parallel-async-requests-in-mvc/
Thanks to AsyncControllers, it’s quite easy to make several asynchronous requests in parallel to different web services, and have MVC gather the results.

GPars
http://gpars.codehaus.org/
Groovy Parallel Systems
The GPars framework offers Java developers intuitive and safe ways to handle Java or Groovy tasks concurrently. Leveraging the enormous flexibility of the Groovy programing language and building on proven Java technologies, we aim to make concurrent programming for multi-core hardware intuitive, robust and enjoyable.

InfoQ: Parallel Programming Patterns: Data Parallelism
http://www.infoq.com/presentations/Parallel-Programming-Patterns
Ralph Johnson presents several data parallelism patterns, including related Java, C# and C++ libraries from Intel and Microsoft, comparing it with other forms of parallelism such as actor programming.

Task Parallel Library: 5 of n – CodeProject
http://www.codeproject.com/KB/cs/Tasks5.aspx
A look into using the Task Parallel Library.

Mired in code: Easy parallel processing in Clojure
http://blog.mired.org/2011/03/easy-parallel-processing-in-clojure.html
For those not familiar with it, the eight queens problem is to place eight queens on a chess board such that none of them are attacking each other. Since queens attack in eight directions, this means that none of them are in the same row or column, and that none of them share a diagonal. It’s interesting, but not incredibly difficult, to do this.

W. Daniel Hillis
http://en.wikipedia.org/wiki/W._Daniel_Hillis
William Daniel “Danny” Hillis (born September 25, 1956, in Baltimore, Maryland) is an American inventor, entrepreneur, and author. He co-founded Thinking Machines Corporation, a company that developed the Connection Machine, a parallel supercomputer designed by Hillis at MIT. He is also co-founder of the Long Now Foundation, Applied Minds, Metaweb, and author of The Pattern on the Stone: The Simple Ideas That Make Computers Work.

Scala Team Wins ERC Grant | The Scala Programming Language
http://www.scala-lang.org/node/8579
The Scala research group at EPFL is excited to announce that they have won a 5 year European Research Grant of over 2.3 million Euros to tackle the “Popular Parallel Programming” challenge. This means that the Scala team will nearly double in size to pursue a truly promising way for industry to harness the parallel processing power of the ever increasing number of cores available on each chip.

Organizing Functional Code for Parallel Execution; or, foldl and foldr Considered Slightly Harmful
http://vimeo.com/6624203
Guy L. Steele, Jr.; Sun Microsystems
International Conference on Functional Programming (ICFP)
Edinburgh 2009
ACM SIGPLAN

InfoQ: How to Think about Parallel Programming: Not!
http://www.infoq.com/presentations/Thinking-Parallel-Programming
Guy L. Steele Jr. believes that it should not be the programmer’s job to think about parallelism, but languages should provide ways to transparently run tasks in parallel. This requires a new approach in building languages supporting algorithms built on independence and build-and-conquer principles rather than on linear decomposition of problems.

Parallel Programming with .NET
http://blogs.msdn.com/b/pfxteam/
All about Async/Await, System.Threading.Tasks, System.Collections.Concurrent, System.Linq, and more…

await anything;
http://blogs.msdn.com/b/pfxteam/archive/2011/01/13/10115642.aspx
One of the very cool things about the new await keyword in C# and Visual Basic is that it’s pattern based.  It works great with Task and Task<TResult>, and awaiting those two types will represent the vast majority of uses, but they’re by no means the only types that can be awaited.  The languages support awaiting any instance that exposes the right method (either instance method or extension method): GetAwaiter.

Professional Parallel Programming with C#: Master Parallel Extensions with .NET 4 (Wrox Programmer to Programmer)
http://www.amazon.com/Professional-Parallel-Programming-Master-Extensions/dp/0470495995

No Callbacks Required: StratifiedJS Returns Sequential Programming to Javascript
http://www.infoq.com/articles/stratifiedjs
Javascript is fundamentally single threaded, no parallel threads in sight. Asynchronous programming is necessary for any task that might block; Javascript programming usually involves creating and passing around a lot of callbacks, essentially forcing the developer to manually translate sequential code into continuation passing style.

Parallelism: In the Cloud, Cluster and Client
http://blogs.msdn.com/b/amit_chatterjee/archive/2010/12/19/parallelism-in-the-cloud-cluster-and-client.aspx
Software and digital experience is now becoming ubiquitous in our lives. Software is everywhere – it is stocking supermarket shelves, delivering electricity and water to our homes, storing our personal information in computers around the world, running nuclear plants and even controlling doomsday weapons! Moreover, with the popularity of the Internet and mobile devices, and with the advances in graphical and natural user interfaces, the creative human minds and the innovative companies are making the digital age more personal, social and indispensible.
This is leading to three fundamental trends in the world today:
Data explosion – the phenomenal growth of raw digital data
Demand for computational power for transforming raw data into meaningful information
Exponential growth in the number of users getting on to the digital super highway

My Links
http://delicious.com/ajlopez/parallel

More links are coming.

Keep tuned!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

April 27, 2012

Parallel Programming: Links, News and Resources (1)

Filed under: Concurrency, Links, Parallel Programming, Programming — ajlopez @ 8:12 pm

Next Post

Parallel programming, leveraging multicore processor, or even distributed machines, is an actual topic. Some of the links I read/collected about this topic.

Patterns for Parallel Programming: Understanding and Applying Parallel Patterns with the .NET Framework 4
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=19222

ztellman’s calx at master – GitHub
https://github.com/ztellman/calx
Calx is an idiomatic wrapper for OpenCL, which is an abstraction layer for parallel computation.

Workshop on Parallelism, and a “breakthrough” in combinatorial geometry
http://geomblog.blogspot.com/2010/11/workshop-on-parallelism-and.html

Back to (Parallel) Basics: Don’t Block Your Threads, Make Async I/O Work For You
http://www.hanselman.com/blog/BackToParallelBasicsDontBlockYourThreadsMakeAsyncIOWorkForYou.aspx

The Renaissance Virtual Machine
http://soft.vub.ac.be/~smarr/rvm-open-source-release/

smarr’s RoarVM at master – GitHub
https://github.com/smarr/RoarVM
RoarVM, formerly known as the Renaissance Virtual Machine (RVM) is developed as part of a IBM Research project to investigate programming paradigms and languages for manycore systems of the future.

YouTube – Clojure Demo
http://www.youtube.com/watch?v=CFCYVfApPUc&feature=share

Thinking about massively parallel Smalltalk
http://wiki.squeak.org/squeak/537

InfoQ: Functional Approaches To Parallelism and Concurrency
http://www.infoq.com/presentations/Functional-Approaches-To-Parallelism

Threading in C# – Free E-book
http://www.albahari.com/threading/
C# supports parallel execution of code through multithreading. A thread is an independent execution path, able to run simultaneously with other threads.

Helios: Heterogeneous Multiprocessing with Satellite Kernels
http://research.microsoft.com/apps/pubs/default.aspx?id=81154

Threading in C# – Part 5 – Parallel Programming
http://www.albahari.com/threading/part5.aspx
In this section, we cover the multithreading APIs new to Framework 4.0 for leveraging multicore processors:These APIs are collectively known (loosely) as PFX (Parallel Framework).

CRDTs: Consistency without concurrency control
http://pagesperso-systeme.lip6.fr/Marc.Shapiro/papers/RR-6956.pdf

The Weekly Source Code 56 – Visual Studio 2010 and .NET Framework 4 Training Kit – Code Contracts, Parallel Framework and COM Interop
http://www.hanselman.com/blog/TheWeeklySourceCode56VisualStudio2010AndNETFramework4TrainingKitCodeContractsParallelFrameworkAndCOMInterop.aspx

J-Machine Project Page
http://cva.stanford.edu/projects/j-machine/
The J-Machine is a fine grained concurrent computer designed by the MIT Concurrent VLSI Architecture group (now located at Stanford University) in conjunction with Intel Corporation.

Parallel Programming with Hints
http://bartoszmilewski.com/2010/05/11/parallel-programming-with-hints/
Wouldn’t it be nice to be able to write sequential programs and let the compiler or the runtime automatically find opportunities for parallel execution?

Beyond Locks and Messages: The Future of Concurrent Programming
http://bartoszmilewski.com/2010/08/02/beyond-locks-and-messages-the-future-of-concurrent-programming/

Parallelism in .NET – Part 18, Task Continuations with Multiple Tasks
http://reedcopsey.com/2010/07/19/parallelism-in-net-part-18-task-continuations-with-multiple-tasks/

InfoQ: Multicore Programming in Haskell
http://www.infoq.com/presentations/Multicore-Programming-in-Haskell

Microsoft Biology Foundation 1.0 Released
http://blogs.msdn.com/b/pfxteam/archive/2010/07/12/10037496.aspx

Designing Parallel Algorithms: Part 1
http://drdobbs.com/go-parallel/article/showArticle.jhtml?articleID=223100878

Dr.Dobb’s Go Parallel
http://drdobbs.com/go-parallel/

DataAllure: Hadoop for DNA sequence analysis
http://blog.dataallure.com/2010/04/hadoop-for-dna-sequence-analysis.html

A Pattern Language for Parallel Programming
http://www.infoq.com/presentations/Pattern-Language-Parallel-Programming
Ralph Johnson presents a pattern language that he and his colleagues are working on in an attempt to solve the hard issues of parallel programming through a set of design patterns: Structural Patterns, Computational Patterns, Parallel Algorithm Strategy Patterns, Implementation Strategy Patterns, and Concurrent Execution Patterns.

Back to (Parallel) Basics: Do you really want to do that? or Why doesn’t the new Parallel.For support BigInteger?
http://www.hanselman.com/blog/BackToParallelBasicsDoYouReallyWantToDoThatOrWhyDoesntTheNewParallelForSupportBigInteger.aspx

InfoQ: Billy Newport Discusses Parallel Programming in Java
http://www.infoq.com/interviews/billy-newport-parallel

Multi-core Parallelization in Clojure – a Case Study
http://www.slideshare.net/adorepump/multicore-parallelization-in-clojure-a-case-study

Patterns of Parallel Programming: A Tutorial on Fundamental Patterns and Practices for Parallelism
http://www.microsoftpdc.com/2009/Patterns-of-Parallel-Programming

The Design of a Task Parallel Library
http://research.microsoft.com/pubs/77368/TheDesignOfATaskParallelLibrary(oopsla2009).pdf

My Links
http://delicious.com/ajlopez/parallel

Keep tuned!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

August 29, 2011

Lambda Calculus: Links, News and Resources (1)

Filed under: Functional Programming, Lambda Calculus, Links, Lisp, Programming — ajlopez @ 9:52 am

"Everything is a lambda in the end" ajlopez (past century)

http://en.wikipedia.org/wiki/Lambda_calculus

In mathematical logic and computer science, lambda calculus, also written as λ-calculus, is a formal system for function definition, function application and recursion. The portion of lambda calculus relevant to computation is now called the untyped lambda calculus. In both typed and untyped versions, ideas from lambda calculus have found application in the fields of logic, recursion theory (computability), and linguistics, and have played an important role in the development of the theory of programming languages (with untyped lambda calculus being the original inspiration for functional programming, in particular Lisp, and typed lambda calculi serving as the foundation for modern type systems).

Closures + Lambda = The key to OOP in Lisp « Learning Lisp
http://lispy.wordpress.com/2007/07/18/closures-lambda-the-key-to-oop-in-lisp/

Papers | Lambda the Ultimate
http://lambda-the-ultimate.org/papers

Notas sobre el Cálculo Lambda
http://ajlopez.zoomblog.com/archivo/2009/04/14/notas-sobre-el-Calculo-Lambda.html

Presenting AjLambda, lambda calculus in C#
http://ajlopez.wordpress.com/2009/02/25/presenting-ajlambda-lambda-calculus-implementation-in-c/

Funarg problem
http://en.wikipedia.org/wiki/Funarg_problem

The lambda calculus
http://faculty.knox.edu/dblaheta/research/lambda.pdf

Fixed point combinator
http://en.wikipedia.org/wiki/Y-combinator

Introducction to Lambda Calculus
http://www.cs.chalmers.se/Cs/Research/Logic/TypesSS05/Extra/geuvers.pdf

Introduction to Lambda Calculus
http://citeseer.ist.psu.edu/barendregt94introduction.html

Lambda Calculus
http://www.cs.bham.ac.uk/~axj/pub/papers/lambda-calculus.pdf

A Tutorial Introduction to the Lambda Calculus
http://www.utdallas.edu/~gupta/courses/apl/lambda.pdf

Knights of the Lambda Calculus
http://en.wikipedia.org/wiki/Knights_of_the_Lambda_Calculus

A Hacker’s Introduction to Partial Evaluation | The Lambda meme – all things Lisp, and more
http://www.ymeme.com/hackers-introduction-partial-evaluation.html

To Dissect a Mockingbird: A Graphical Notation for the Lambda Calculus with Animated Reduction
http://users.bigpond.net.au/d.keenan/Lambda/index.htm

http://www.defmacro.org/

λProlog Home Page
http://www.lix.polytechnique.fr/Labo/Dale.Miller/lProlog/

Church’s Type Theory
http://plato.stanford.edu/entries/type-theory-church/

Lambda Calculus Schemata
http://cs-www.cs.yale.edu/homes/fischer/pubs/lambda.pdf

Lambda Animator : animated reduction of the lambda calculus
http://thyer.name/lambda-animator/

Peter Selinger: Papers
http://www.mscs.dal.ca/~selinger/papers.html

Mike Taulty’s Blog : Anonymous Methods, Lambdas, Confusion
http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2009/01/28/anonymous-methods-lambdas-confusion.aspx

Lecture Notes on the Lambda Calculus (pdf)
http://www.mscs.dal.ca/~selinger/papers/lambdanotes.pdf

A Security Kernel Based on the Lambda-Calculus
http://mumble.net/~jar/pubs/secureos/

System F: Second-order lambda calculus
http://en.wikipedia.org/wiki/System_F

(Mis)using C# 4.0 Dynamic – Type-Free Lambda Calculus, Church Numerals, and more
http://community.bartdesmet.net/blogs/bart/archive/2009/08/17/mis-using-c-4-0-dynamic-type-free-lambda-calculus-church-numerals-and-more.aspx

Type-Free Lambda Calculus in C#, Pre-4.0 – Defining the Lambda Language Runtime (LLR)
http://community.bartdesmet.net/blogs/bart/archive/2009/08/30/type-free-lambda-calculus-in-c-pre-4-0-defining-the-lambda-language-runtime-llr.aspx

Jim McBeath: Practical Church Numerals in Scala
http://jim-mcbeath.blogspot.com/2008/11/practical-church-numerals-in-scala.html

My Links
http://www.delicious.com/ajlopez/lambda

Angel "AjLambda" Lopez

Older Posts »

Theme: Shocking Blue Green. Blog at WordPress.com.

Follow

Get every new post delivered to your Inbox.

Join 28 other followers