F# Weekly #47, 2014

FsAdvent

Welcome to F# Weekly,

A roundup of F# content from this past week:

News

Videos/Presentations/Courses

Blogs

F# vNext News

New releases

That’s all for now. Have a great week.

Previous F# Weekly edition – #46Subscribe

F# Advent Calendar in English 2014

Update: Event extended until December 31.

Our friends from Japan have a beautiful event called “F# Advent Calendar“. Every day from December 1 to December 31, one awesome volunteer publish a new post about F#. What an amazing way to celebrate Christmas, isn’t it?

Lets support this initiative and do an English version of the calendar. Two blog posts per day is better than one, isn’t it? We need 31 volunteers, who are ready to prepare a post about F# and publish it on specified date.

Rules

Rules are very simple:

  1. Choose F# related topic for your blog post and send it to me on Twitter or leave a comment to this post.
  2. Prepare a blog post in English (about F# or using F#)
  3. Publish your post on specified date (according to the calendar)
  4. Post link to your post on Twitter with hashtags #fsharp and #FsAdvent.

Calendar

Date (December) Author Post Title
01 (Monday)  Scott Wlaschin  FsCheck and property-based testing
02 (Tuesday)  Philae Trelford  Xmas countdown
03 (Wednesday)  Jon Wood  Intro to Data Science
04 (Thursday)  Isaac Abraham  Distributing Mailbox Processors with Azure
05 (Friday)  Richard Dalton  Object Oriented Programming in F#
06 (Saturday)  Steve Shogren  F# Polymorphism
07 (Sunday)  Richard Minerich
08 (Monday)  Tomas Petricek
09 (Tuesday)  Jamie Dixon  F# and IBM Watson
10 (Wednesday)  Dave Thomas ?
11 (Thursday)  Mårten Rånge  Becoming an F# contributor
12 (Friday)  Andrea Magnorsky  F# and games on celebration times
13 (Saturday)  John Tarbox  F# for social media analytics
14 (Sunday)  Bartosz Sypytkowski
15 (Monday)  Evelina Gabasova  Visualizing high-dimensional data with F#
16 (Tuesday)  Tomas Jansson  Pure functional applications
17 (Wednesday)  Mark Seemann
18 (Thursday)  Michael Newton  18th on generated types
19 (Friday)  Carsten König  A type-provider for prime number
20 (Saturday)  Mathias Brandewinder
21 (Sunday)  Anthony Brown  The IoT at scale with F# and actors
22 (Monday)  Pete Smith  Functional web synergy with F# and OWIN
23 (Tuesday)  Yan Cui
24 (Wednesday)  Jérémie Chassaing  Fun with talking computer
25 (Thursday)  Ross McKinlay  The North Pole Type Provider
26 (Friday)  Lincoln Atkinson  Nested looping to any depth with break, continue, and return
27 (Saturday)  Stachu Korick  Solving a Rubik’s Cube with F#
28 (Sunday)  Tim Jones  Make Santa Jump
29 (Monday)  Andrew Cherry
30 (Tuesday)  Reed Copsey, Jr.  Gjallarhorn
31 (Wednesday)  Don Syme ?

NuGet dependency visualizer with F# and Graphviz

Script for this article is available as public Gist.

For a long time I was interested in what is going on on NuGet. I think that NuGet UI does not provide one important piece of information – which packages depend on current packages. This information is very useful for package authors and also can help a user to find packages that provide more sophisticated implementation.

Other interesting thing is to see the big picture and answer some global questions:

  • What is inside the technology I use? What is the dependency of packages that I use? What are dependencies of dependencies and so on.
  • What is built on top of packages that I maintain? What beautiful applications of my ideas other can find? What is the cost of releasing a broken package? Who can be harmed?

I believe that there are a lot of other answers we can find from the high view.

Some time ago I have found that NuGet team provides NuGet.Core package that has all  API required to communicate with NuGet. The API is not really fast if you are going to download information about all versions of all NuGet packages ;) But NuGet team is working on a new v3 API that is going to be much faster than current v2. For current research I have downloaded info about all packages and all their versions to my FSI session to be able to run different types of analysis and create visualizations without further communication with NuGet. This operation is slow enough: it took about 1 hour last time when I run it, but it really depends on NuGet workload and your internet connection.

The second thing is visualization of the result, here I want to say thank you to Scott Wlaschin for his great script type-dependency-graph.fsx (that was built for ‘Cycles and modularity in the wild‘ analysis). I took his GraphViz module and slightly modified it to allow colorful graphs printing. To use it you need to download GraphViz from the official site.

That is all tooling that we need. So we are ready to describe a structure of an analysis – script extracts 3 subsets of NuGet packages and visualizes them in different colors with all dependencies.

  1. Packages that are in scope of analysis (green on the graphs)
  2. Packages that we depend on (grey on the graph) – Package is in the set 2 if exists a dependency path from any package from Set 1 to this package.
  3. Packages that depend on us (blue on the graph) – Package is in the set 3 if exists a dependency path from this package to any package from Set 1.

NOTE: In this analysis I ignored package version and considered only latest package version and dependencies of latest version. If you need more accurate analysis you should adjust script a bit.

Running this script I did some interesting observations:

FsPickler is already highly used by other packages!

FsPickler is already highly used by other packages!

FSharp.Compiler.Service is already deeply incorporated in tooling!

FSharp.Compiler.Service is already deeply incorporated in tooling!

Too many different Fsharp.Core packages of NuGet adopted by different tools.

Too many different Fsharp.Core packages on NuGet adopted by different tools.

FSharpx is still alive! ;)

FSharpx is still alive! ;)

Roslyn.dot

Roslyn ohhhh Roslyn

 

F# Ecosystem is HUGE! (see full svg version here, surry bug without FunScipt ;))

F# Ecosystem is HUGE! (see full svg version here, sorry but without FunScipt ;))

I hope that you’ll also find this script useful and discover something interesting on NuGet.

 

F# Weekly #46, 2014

Welcome to F# Weekly,

A roundup of F# content from this past week:

News

Videos/Presentations/Courses

Blogs

F# vNext News

New releases

That’s all for now.  Have a great week.

Previous F# Weekly edition – #45Subscribe

F# Weekly #45, 2014

Welcome to F# Weekly,

A roundup of F# content from this past week:

News

Videos/Presentations/Courses

Blogs

F# vNext News

New releases

That’s all for now.  Have a great week.

Previous F# Weekly edition – #44Subscribe

F# Weekly #44, 2014

Welcome to F# Weekly,

A roundup of F# content from this past week:

News

Videos/Presentations/Courses

Blogs

F# vNext News

New releases

That’s all for now.  Have a great week.

Previous F# Weekly edition – #43Subscribe

Anniversary edition of F# Weekly #43, 2014 – Two years together

Weekly-2

Dear all,

Thank you for being with us during these two years, reading the news and participating in community life. Thank you to everyone who contributed to F# Community Projects and Visual F#. I hope you will stay with us and I will be glad to see new faces next year.

A roundup of F# content from this past week:

News

Videos/Presentations/Courses

Blogs

F# vNext News

New releases

That’s all for now.  Have a great week.

Previous F# Weekly edition – #42Subscribe

 

F# Weekly #42, 2014

Welcome to F# Weekly,

A roundup of F# content from past weeks:

News

Videos/Presentations/Courses

Blogs

F# vNext News

New releases

That’s all for now.  Have a great week.

Previous F# Weekly edition – #39-41Subscribe

F# Weekly #39-41, 2014

Welcome to F# Weekly,

A roundup of F# content from past weeks:

News

Videos/Presentations/Courses

Blogs

Paket – dependency manager for .NET & Mono!

Paket is an alternative alternative dependency manager that replace nuget.exe in your repository and enables precise control over your dependencies. Features:

F# vNext News

New releases

That’s all for now.  Have a great week.

Previous F# Weekly edition – #38Subscribe

Follow

Get every new post delivered to your Inbox.

Join 133 other followers