By Loïc Denuzière on Thursday, June 19, 2014 — 0 comments

CloudSharper 0.9.13 with workspace cloud sharing! Core team

Here we are again with a new release of CloudSharper today. This is an exciting one, as it allows you to upload your workspaces to our cloud storage and share them with everyone!

To use this feature, simply go to the "Workspace" menu and choose "Publish Workspace", or type sync up in the console. The contents of the current workspace will be uploaded as shown below:

Once uploaded, you can share your work in two different ways: as a downloadable zip, or as a link to clone it as a new local CloudSharper workspace. It's that easy!

In order to avoid publishing workspaces littered with generated and downloaded files, we support a .csignore configuration file in the root of the workspace. This file contains a list of glob patterns for files and directories that should not be included in the uploaded workspace. As an example, here is the .csignore we now include with every newly created workspace:

1
2
3
/packages/
bin/
obj/

One last detail about this feature: subsequent uploads of the same workspace will overwrite the current one, so you can re-run sync up to update the online version of your workspace. In a future release, we will also include the capability to upload a snapshot of the workspace (or just a subfolder) under a separate unique ID.

Here is the full change log for this release:

  • Implement sync up command, and corresponding menu entry, to upload the current workspace to Azure cloud storage via cloudsharper.com.
  • #426: Use .csignore file as a list of glob patterns for files that should not be included in uploaded workspace.
  • #430: Automatically add a .csignore to new workspaces.
  • #429: Simplified the login page to a more minimalist style and added a registration form on this page.
  • #428: Put /zip download behind authentication.
  • NuGet source settings, including credentials, are now saved in a local file (~/CloudSharper/<username>/Workspaces/NuGet.config).
  • Editor tabs now have a context menu for saving or closing tabs.
  • Added Disqus comment threads to our blog entries.
By Loïc Denuzière on Thursday, June 12, 2014 — 0 comments

CloudSharper 0.9.12 Core team

This new release of CloudSharper alpha improves the NuGet package management workflow.

  • Automatic referencing of newly installed or updated packages: CloudSharper inserts references in the project file, similarly to how Visual Studio does.
  • Support for package sources with authentication. Credentials are not saved and have to be provided again after reloading a workspace. For upcoming versions we are considering options to allow a better workflow without risking to compromise user authentication data.

This is a protocol-changing version, so make sure that you install the latest version of the CloudSharper local component. Happy coding!

By Loïc Denuzière on Friday, June 6, 2014 — 0 comments

CloudSharper 0.9.11.2 Core team

This minor release fixes several bugs and hopefully clarifies the situation regarding SSL certificates for nuget.org.

Change log:

  • #395: Respect folder structure when creating a workspace from zip.
  • #390: Completion: also surround with ``...`` when the identifier starts with a digit.
  • #415: On mono, on local component startup, test the presence of the SSL certificates for nuget.org and, in case of failure, warn that the user should run mozroots --import --sync.
  • #421: Deploy window: better heuristic to determine what is a sitelet and what is a static HTML application.

Happy coding!

By Anton Tayanovskyy on Thursday, June 5, 2014 — 0 comments

WebSharper: What's New (June 2014) Core team

Mono, Mac and Linux

Since February, we worked on supporting WebSharper development, and not just deployment, on Mono, Mac and Linux. Most of the code works fine, but unfortunately Mono support for MSBuild with XBuild leaves much to be desired, and Xamarin team is in no hurry to fix or respond to this - see [link:bugzilla.xamarin.com] and [link:bugzilla.xamarin.com] - as they do not see XBuild/MSBuild compatibility as a priority.

Fortunately, we were able to find workarounds to avoid buggy XBuild features, by moving most build logic to F# code invoked via XBuild/MSBuild plugins. There is now some preliminary support for building on Mono and using MonoDevelop or Xamarin Studio 4.2, with 5.0 support and project turnaround between all IDEs (Visual Studio, XS/MD, CloudSharper) coming soon.

Numerics

We are working with Microsoft Research to improve WebSharper performance on numeric code for applications such as numeric biology. As part of this work, we created an experimental compiler from an F# subset to ASM.js. So far, the prototype failed to provide speedups on current benchmarks, but came quite close. As the experiments continue, we are considering more approaches, such as integrating loop-invariant code motion into the optimizer, or perhaps even taking advantage of LLVM IR and existing passes written for it.

Visualization and Extensions

Andras Janko has done interesting work lowering the barrier to using Sencha Architect UI design tool from WebSharper with Type Providers.

D3.js binding received an update and multiple improvements. There are also now a few more samples of using this wonderful library with WebSharper.

Leaflet.js now also has a WebSharper binding.

Single-Page Applications and Reactive DOM

There are some lively discussions on better SPA support with the IntelliFactory team - Andras Janko, Loic Denuziere and Simon Fowler who is joining us for a summer internship. We are evaluating Facebook React, Angular JS, and D3.js and looking how we can do better in a typed language, in particular how to better integrate dataflow and data binding. If the prototypes work out, WebSharper is likely to obtain a new powerful front-end combinator library by the end of this summer.

By Loïc Denuzière on Tuesday, June 3, 2014 — 0 comments

CloudSharper 0.9.11.1 Core team

We are releasing CloudSharper alpha 0.9.11.1, a bugfix version after yesterday's bigger release. As usual, some of the fixes require you to download the latest local component.

Change log:

  • 398: Show user's login on website pages.
  • 414: Local CloudSharper crash on create workspace on mono.
  • 417: Login and registration: add waiting text
  • 416: Error executing task WebSharperTask
  • 418: Middle-clicking a tab to close it doesn't work on Firefox
  • 420: NullReferenceException when building msbuild Library/Library.fsproj on WebSharper template

Known issues and workarounds:

  • On mono, running a build on a solution (Ctrl+B) that contains WebSharper projects fails. We are investigating this issue; in the meantime you can directly build the project itself by typing msbuild MyProject/MyProject.fsproj in the console (Ctrl+E).

Happy coding!

By Loïc Denuzière on Monday, June 2, 2014 — 0 comments

CloudSharper 0.9.11 Core team

We just released version 0.9.11 of CloudSharper alpha. The main highlights are:

  • Better version compatibility management. If you are trying to use CloudSharper with a local component that is not the latest, you will see either an error or a warning, depending on whether your local component is protocol-compatible with the current CloudSharper.
  • A user interface for NuGet package management, accessible by right-clicking the folder of a project and selecting "Manage packages".
    Note that this only installs the package into the /packages folder; modifying the project file to add references, as Visual Studio does, will be added in an upcoming release.

Here is the full change log:

  • #386: Add protocol version negociation on websocket connect
  • #388: CloudSharper.Console.exe not in CloudSharper.zip
  • #389: Code completion tooltips show "(Loading description...)" most of the time
  • #399: Using the same type provider in several workspaces confuses the code service
  • #400: On disconnect, offer to reconnect immediately instead of waiting 30s
  • #401: Better deal with projects that failed to load in the code service
  • #403: Code service: when a standalone fs file becomes integrated in a project, clear errors on it
  • #404: Registration form - no feedback on success
  • #405: NuGet window: typing <enter> in search input should trigger the search
  • #406: Writing packages.config omits the <?xml ... ?> line
  • #407: Nuget manager: exception when reading the installed packages
  • #409: Wrong packages in package.config
  • #410: WebSharper template fixes

Happy coding!

By Loïc Denuzière on Thursday, May 22, 2014 — 1 comment

WebSharper Binding for Leaflet released Core team

We are happy to announce the release of a WebSharper binding for Leafletjs, a library that makes it easy to display and work with maps such as OpenStreetMap. It is available on NuGet, and the sources are on Github.

Here is a sample to show you how easy it is to work with Leaflet in WebSharper:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Div [Attr.Style "height: 600px;"]
|>! OnAfterRender (fun div ->

    // Create the map
    let map = Leaflet.Map(div.Body)

    // Add the tiles from OpenStreetMap.
    // We provide the URL templates and copyright attributions for OpenStreetMap
    // and Mapbox as constants, so you don't waste time looking them up.
    map.AddLayer(
        Leaflet.TileLayer(
            Leaflet.TileLayer.OpenStreetMap.UrlTemplate,
            Leaflet.TileLayer.Options(
                Attribution = Leaflet.TileLayer.OpenStreetMap.Attribution)))

    // Set the initial view (latitude, longitude and zoom).
    map.SetView((47.49883, 19.0582), 14)

    // Add a marker at the position of our office.
    map.AddLayer(
        let m = Leaflet.Marker((47.4952, 19.07114))
        // Show a popup when the marker is clicked.
        m.BindPopup("IntelliFactory")
        m)

    // Add events to show the mouse position in another div named `coordinates'.
    map.On_mousemove(fun map ev ->
        coordinates.Text <- "Position: " + ev.Latlng.ToString())
    map.On_mouseout(fun map ev ->
        coordinates.Text <- "")
)

A meatier sample on the WebSharper website will follow soon. Happy coding!

By András Jankó on Tuesday, May 20, 2014 — 0 comments

Sencha Architect type provider for WebSharper updated Core team

This release makes it even more convenient to build Ext JS and Sencha Touch applications with WebSharper.

See the updated documentation and sample pages.

Changes to the Sencha Architect type provider:

  • Tools on a panel with an itemId have provided getter properties.
  • Optional Inherit = true argument on the type provider. This makes the wrapper types inherit their component class. Switching to this makes the .self property unnecessary in most of the cases, but you can still use it for upcast. On the downside, generated getter properties for items are harder to find in IntelliSense as they are mixed with the members of the component class. This has no effect on generated JavaScript code.
  • Parser fixes.

Recent changes to the Ext JS/Sencha Touch bindings:

  • Breaking change: Function arguments that are not documented in the Sencha docs are now typed EcmaScript.Function in the binding. Adding an As cast may be required to older code.
  • All config objects have an inlined .With method defined with two overloads. It can add a single key-value pair or copy all the fields from another config object.

By Loïc Denuzière on Friday, May 16, 2014 — 0 comments

CloudSharper Local alpha 0.9.10.2 Core team

This minor release of CloudSharper alpha focuses on a few long-standing bug fixes, as well as the addition of the "Search and replace" functionality in the editor.

The communication protocol has been altered slightly, so don't forget to update your local component by downloading it here!

Here is the full change log:

  • #366: Correctly propagate webserverport from CloudSharper.Console.exe.config.
  • #372: Refresh workspace list after creating a workspace.
  • #373: Show messages in build window when projects are first loaded. This should hopefully dissipate confusion when trying to build immediately after opening a workspace and the message "Error: project file invalid" showed up.
  • #375: Add CodeMirror search. When the editor is focused, you can now search and/or replace text inside it. Here is the list of keyboard shortcuts:

    • Ctrl+F (Cmd+F on mac): start a search.
    • Ctrl+G (Cmd+G on mac): find the next match for the current search.
    • Shift+Ctrl+G (Shift+Cmd+G on mac): find the previous match for the current search.
    • Shift+Ctrl+F (Cmd+Option+F on mac): replace interactively.
    • Shift+Ctrl+R (Shift+Cmd+Option+F on mac): replace all.
  • #377: Add "Forgot your password?" form.

Happy coding!

By Adam Granicz on Thursday, May 15, 2014 — 0 comments

Program F# with CloudSharper everywhere Core team

Are you an F# user on Mac OS or Linux, looking for the easiest way to develop multi-project F# solutions with full code assistance and type checking? Would you like to use F# Interactive for developing and testing parts of your web applications interactively? Would you like to benefit from the multitude of web libraries in your development environment? Well, if yes - look no further, CloudSharper, the world's most versatile online IDE has arrived to Mac and Linux!

Here are a couple screenshots showing CloudSharper in action on Mac OS and Linux (click on them to view the full-size image):

We will going full force to bring you even more awesome features to kickstart your F# development experience on the web, so register your free CloudSharper account, use it in your everyday work, and tell us what you think.

Happy coding!