5 Steps to getting started with IronRuby


Note: Cross posted from IUpdateable from Eric Nelson.

Permalink

IronRuby is a Open Source implementation of the Ruby programming language for .NET, heavily relying on Microsoft’s Dynamic Language Runtime. The project’s #1 goal is to be a true Ruby implementation, meaning it runs existing Ruby code. Check out this summary of using the Ruby standard library and 3rd party libraries in IronRuby. IronRuby has tight integration with .NET, so any .NET types can be used from IronRuby and the IronRuby runtime can be embedded into any .NET application.

These 5 steps should get you nicely up and running on IronRuby – OR … you could just watch a video session from the lead developer which took place earlier this month (March 2010 – 60mins). But the 5 steps will be quicker 🙂

Step 1 – Install IronRuby 🙂

You can install IronRuby automatically using an MSI or manually. For simplicity I would recommend the MSI install.

TIP: As of the 25th of March IronRuby has not quite shipped. The download above is a Release Candidate (RC) which means it is still undergoing final testing by the team. You will need to uninstall this version (RC3) once the final release is available. The good news is that uninstalling IronRuby RC3 will work without a hitch as the MSI does relatively little.

Step 2 – Install an IronRuby friendly editor

You will need to Install an editor to work with IronRuby as there is no designer support for IronRuby inside Visual Studio. There are many editors to choose from but I would recommend you either went with:

  • SciTE (Download the MSI): This is a lightweight text editor which is simple to get up and running. SciTE understands Ruby syntax and allows you to easily run IronRuby code within the editor with a small change to the config file.
  • SharpDevelop 3.2 (Download the MSI): This is an open source development environment for C#, VB, Boo and now IronRuby. IronRuby support is new but it does include integrated debugging. You might also want to check out the main site for SharpDevelop.

TIP: There are commercial tools for Ruby development which offer richer support such as intellisense.. They can be coerced into working with IronRuby. A good one to start with is RubyMine which needs some small changes to make it work with IronRuby.

Step 3 – Run the IronRuby Tutorial

Run through the IronRuby tutorial which is included in the IronRuby download. It covers off the basics of the Ruby languages and how IronRuby integrates with .NET. In a typical install it will end up at C:\Program Files\IronRuby 0.9.4.0\Samples\Tutorial.

image

Which will give you the tutorial implemented in .NET and Ruby.

image

TIP: You might also want to check out these two introductory posts Using IronRuby and .NET to produce the ‘Hello World of WPF’ and What’s IronRuby, and how do I put it on Rails?

Step 4 – Get some good books to read

Get a great book on Ruby and IronRuby. There are several free ebooks on Ruby which will help you learn the language. The little book of Ruby is a good place to start.

I would also recommend you purchase IronRuby Unleashed (Buy on Amazon UK | Buy on Amazon USA). You might also want to check out this mini-review.

Other books are due out soon including IronRuby in Action.

TIP: Also check out the official documentation for using .NET from IronRuby.

Step 5 – Keep an eye on the team blogs

Keep an eye on the IronRuby team blogs including Jimmy Schementi, Jim Deville and Tomas Matousek (full list)

TIP: And keep a watch out for the final release of IronRuby – due anytime soon!

Note: Cross posted from IUpdateable from Eric Nelson.

Permalink

Rob Blackwell on interoperability and Azure


Note: Cross posted from IUpdateable from Eric Nelson.

Permalink

At QCon in March we had a sample Azure application implemented in both Java and Ruby to demonstrate that the Windows Azure Platform is not just about .NET. The following is an interesting interview with Rob Blackwell, the R&D director of the partner who implemented the application.

UK Interoperability Team Interviews Rob Blackwell, R&D Director at Active Web Solutions.

Is Microsoft taking interoperability seriously?

Yes. In the past, I think Microsoft has, quite rightly come in for criticism, but architects and developers should look at this again. The Interoperability Bridges site (http://www.interoperabilitybridges.com/ ) shows a wide range of projects that allow interoperability from Java, Ruby and PHP for example.

The Windows Azure platform has been architected with interoperable APIs in mind. It’s straightforward to access the various storage facilities from just about any language or platform. Azure compute is capable of running more than just C# applications!

Why is interoperability important to you?

My company provides consultancy and bespoke development services. We’re a Microsoft Gold Partner, but we live in the real world where companies have a mix of technologies provided by a variety of vendors.

When developing an enterprise software solution, you rarely have a completely blank canvas. We often see integration scenarios where we need to exchange data with legacy systems. It’s not unusual to see modern Silverlight applications being built on top of Java or Mainframe based back ends.

Could you give us some examples of where interoperability has been important for your projects?

We developed an innovative Sea Safety system for the RNLI Lifeboats here in the UK. Commercial Fishing is one of the most dangerous professions and we helped developed the MOB Guardian System which uses satellite technology and man overboard devices to raise the alarm when a fisherman gets into trouble. The solution is implemented in .NET running on Windows, but without interoperable standards, it would have been impossible to communicate with the satellite gateway technology. For more information, please see the case study: http://www.microsoft.com/casestudies/Case_Study_Detail.aspx?CaseStudyID=4000005892

More recently, we were asked to build a web site to accompany the QCon 2010 conference in London to help demonstrate and promote interoperability. We built the site using Java and Restlet and hosted it in Windows Azure Compute. The site accepts feedback from visitors and all the data is stored in Windows Azure Storage. We also ported the application to Ruby on Rails for demonstration purposes. Visitors to the stand were surprised that this was even possible.

Why should Java developers be interested in Windows Azure?

Windows Azure Storage consists of Blobs, Queues and Tables. The storage is scalable, durable, secure and cost-effective. Using the WindowsAzure4j library, it’s easy to use, and takes just a few lines of code. If you are writing an application with large data storage requirements, or you want an offsite backup, it makes a lot of sense.

Running Java applications in Azure Compute is straightforward with tools like the Tomcat Solution Accelerator (http://code.msdn.microsoft.com/winazuretomcat )and AzureRunMe (http://azurerunme.codeplex.com/ ).

The Windows Azure AppFabric Service Bus can also be used to connect heterogeneous systems running on different networks and in different data centres.

How can The Service Bus be considered an interoperability solution?

I think that the Windows Azure AppFabric Service Bus is one of Microsoft’s best kept secrets. Think of it as “a globally scalable application plumbing kit in the sky”.

If you have used Enterprise Service Buses before, you’ll be familiar with the concept. Applications can connect to the service bus to securely exchange data – these can be point to point or multicast links.

With the AppFabric Service Bus, the applications can exist anywhere that has access to the Internet and the connections can traverse firewalls. This makes it easy to extend or scale your application or reach out to other networks and technologies.

For example, let’s say you have a SQL Server database running on premises and you want to expose the data to a Java application running in the cloud. You could set up a point to point Service Bus connection and use JDBC. Traditionally this would have been difficult or impossible without punching holes in firewalls and compromising security.

Rob Blackwell is R&D Director at Active Web Solutions, www.aws.net , a Microsoft Gold Partner specialising in leading edge software solutions. He is an occasional writer and conference speaker and blogs at www.robblackwell.org.uk

Related Links:

Live examples of the Windows Azure Platform running Java and Ruby on Rails


Note: Cross posted from IUpdateable from Eric Nelson.

Permalink

At QCon in March we had a booth focused on interoperability out of which came the idea to create an application implemented in both Java and Ruby on Rails, running on top of the Windows Azure Platform.

Nothing fancy, just an application to capture attendees view on Microsoft and Interoperability. It was implemented by Active Web Solutions, long time fans of Azure.

Wroth a quick squint 🙂 Check out the related links below for info to get you up and running.

image

Check out

Related Links:

Mini Book Review of IronRuby Unleashed by Shay Friedman


Note: Cross posted from IUpdateable from Eric Nelson.

Permalink

When I get some time (and hell starts to look a little chilly) I would love to do a more detailed review. But I wanted to get something “out there” as I really like this book and reviews of it seem a little thin on the ground.

In brief:

  • Is it a good book? Yes
  • Would I recommend this book to a .NET developer who was new to Ruby? Yes (This is me by the way)
  • Would I recommend this book to a Ruby developer who was new to .NET ? Yes
  • Would I recommend this book to a developer who sometimes does Ruby and sometimes does .NET? Yes
  • Would I recommend this book to a developer new to .NET and new to Ruby? Yes

The above demonstrates how well balanced this book is (IMHO).

What I like about it:

  • Its assumes pretty much no knowledge of IronRuby or .NET. All it asks is that you are a developer interested in IronRuby. Yet it manages to cover off the topics in a good degree of detail.
    • If you are a Ruby developer you skip Part 2, if you are a .NET developer you skip some of Part 1 and whizz through the short intros to the individual technologies such as WPF.
  • It is definitely not a “lets makes the manual look pretty” book – this is original content thoughtfully written and presented.
  • It is pretty comprehensive – in 500 pages it packs in 
    • Intro to IronRuby
    • Intro to .NET
    • Intro to Ruby
    • Using IronRuby with Windows Forms, ASP.NET, WPF, Silverlight etc
    • Getting Rails working with IronRuby
    • Unit testing with IronRuby – which I think is an excellent way for a .NET developer to start using IronRuby
    • Embedding IronRuby in a .NET app  – another interesting “first step” for a .NET developer

What I didn’t like:

  • Err… nothing yet. Ok, If I am being picky then the start of chapter 2 irked me a little as it went through the history of .NET. “The first version [of the .NET Framework] wasn’t that great”.  Felt pretty good to me compared to Java and C++ development at the time 🙂

image

Buy on Amazon UK | Buy on Amazon USA

Related Links:

Guest Post: Using IronRuby and .NET to produce the ‘Hello World of WPF’


Note: Cross posted from IUpdateable from Eric Nelson.

Permalink

[You might want to also read other GuestPosts on my blog – or contribute one?]

On the 26th and 27th of March (2010) myself and Edd Morgan of Microsoft will be popping along to the Scottish Ruby Conference. I dabble with Ruby and I am a huge fan whilst Edd is a “proper Ruby developer”. Hence I asked Edd if he was interested in creating a guest post or two for my blog on IronRuby. This is the second of those posts.

If you should stumble across this post and happen to be attending the Scottish Ruby Conference, then please do keep a look out for myself and Edd. We would both love to chat about all things Ruby and IronRuby.

And… we should have (if Amazon is kind) a few books on IronRuby with us at the conference which will need to find a good home.

This is me and Edd and … the book:

eric09 imageimage

Order on Amazon: http://bit.ly/ironrubyunleashed

Using IronRuby and .NET to produce the ‘Hello World of WPF’

In my previous post I introduced, to a minor extent, IronRuby. I expanded a little on the basics of by getting a Rails app up-and-running on this .NET implementation of the Ruby language — but there wasn’t much to it! So now I would like to go from simply running a pre-existing project under IronRuby to developing a whole new application demonstrating the seamless interoperability between IronRuby and .NET. In particular, we’ll be using WPF (Windows Presentation Foundation) — the component of the .NET Framework stack used to create rich media and graphical interfaces.

Foundations of WPF

To reiterate, WPF is the engine in the .NET Framework responsible for rendering rich user interfaces and other media. It’s not the only collection of libraries in the framework with the power to do this — Windows Forms does the trick, too — but it is the most powerful and flexible. Put simply, WPF really excels when you need to employ eye candy. It’s all about creating impact. Whether you’re presenting a document, video, a data entry form, some kind of data visualisation (which I am most hopeful for, especially in terms of IronRuby – more on that later) or chaining all of the above with some flashy animations, you’re likely to find that WPF gives you the most power when developing any of these for a Windows target.

Let’s demonstrate this with an example. I give you what I like to consider the ‘hello, world’ of WPF applications: the analogue clock.

Today, over my lunch break, I created a WPF-based analogue clock using IronRuby… Any normal person would have just looked at their watch.
Twitter

The Sample Application:

Click here to see this sample in full on GitHub.

Using Windows Presentation Foundation from IronRuby to create a Clock class

image

Invoking the Clock class

image 

Gives you

image

The above is by no means perfect (it was a lunch break), but I think it does the job of illustrating IronRuby’s interoperability with WPF using a familiar data visualisation. I’m sure you’ll want to dissect the code yourself, but allow me to step through the important bits. (By the way, feel free to run this through ir first to see what actually happens).

Now we’re using IronRuby – unlike my previous post where we took pure Ruby code and ran it through ir, the IronRuby interpreter, to demonstrate compatibility. The main thing of note is the very distinct parallels between .NET namespaces and Ruby modules, .NET classes and Ruby classes. I guess there’s not much to say about it other than at this point, you may as well be working

with a purely Ruby graphics-drawing library.

You’re instantiating .NET objects, but you’re doing it with the standard Ruby .new method you know from Ruby as Object#new — although, the root object of all your IronRuby objects isn’t actually Object, it’s System.Object. You’re calling methods on these objects (and classes, for example in the call to System.Windows.Controls.Canvas.SetZIndex()) using the underscored, lowercase convention established for the Ruby language. The integration is so seamless. The fact that you’re using a dynamic language on top of .NET’s CLR is completely abstracted from you, allowing you to just build your software.

A Brief Note on Events

Events are a big part of developing client applications in .NET as well as under every other environment I can think of. In case you aren’t aware, event-driven programming is essentially the practice of telling your code to call a particular method, or other chunk of code (a delegate) when something happens at an unpredictable time. You can never predict when a user is going to click a button, move their mouse or perform any other kind of input, so the advent of the GUI is what necessitated event-driven programming.

Th
is is where one of my favourite aspects of the Ruby language, blocks, can really help us. In traditional C#, for instance, you may subscribe to an event (assign a block of code to execute when an event occurs) in one of two ways: by passing a reference to a named method, or by providing an anonymous code block. You’d be right for seeing the parallel here with Ruby’s concept of blocks, Procs and lambdas. As demonstrated at the very end of this rather basic script, we are using .NET’s System.Timers.Timer to (attempt to) update the clock every second (I know it’s probably not the best way of doing this, but for example’s sake).

Note: Diverting a little from what I said above, the ticking of a clock is very predictable, yet we still use the event our Timer throws to do this updating as one of many ways to perform that task outside of the main thread.

You’ll see that all that’s needed to assign a block of code to be triggered on an event is to provide that block to the method of the name of the event as it is known to the CLR. This drawback to this is that it only allows the delegation of one code block to each event. You may use the add method to subscribe multiple handlers to that event – pushing that to the end of a queue. Like so:

def tick
    puts "tick tock"
end

timer.elapsed.add method(:tick)
timer.elapsed.add proc { puts "tick tock" }
tick_handler = lambda { puts "tick tock" }
timer.elapsed.add(tick_handler)

 

The ability to just provide a block of code as an event handler helps IronRuby towards that very important term I keep throwing around; low ceremony. Anonymous methods are, of course, available in other more conventional .NET languages such as C# and VB but, as usual, feel ever so much more elegant and natural in IronRuby.

Note: Whether it’s a named method or an anonymous chunk o’ code, the block you delegate to the handling of an event can take arguments – commonly, a sender object and some args.

Another Brief Note on Verbosity

Personally, I don’t mind verbose chaining of references in my code as long as it doesn’t interfere with performance – as evidenced in the example above. While I love clean code, there’s a certain feeling of safety that comes with the terse explicitness of long-winded addressing and the describing of objects as opposed to ambiguity (not unlike this sentence). However, when working with IronRuby, even I grow tired of typing System::Whatever::Something. Some people enjoy simply assuming namespaces and forgetting about them, regardless of the language they’re using. Don’t worry, IronRuby has you covered.

It is completely possible to, with a call to include, bring the contents of a .NET-converted module into context of your IronRuby code – just as you would if you wanted to bring in an ‘organic‘ Ruby module. To refactor the style of the above example, I could place the following at the top of my Clock class:

class Clock
    include System::Windows::Shape
    include System::Windows::Media
    include System::Windows::Threading
    # and so on...

 

And by doing so, reduce calls to System::Windows::Shapes::Ellipse.new to simply Ellipse.new or references to System::Windows::Threading::DispatcherPriority.Render to a friendlier DispatcherPriority.Render.

Conclusion

I hope by now you can understand better how IronRuby interoperates with .NET and how you can harness the power of the .NET framework with the dynamic nature and elegant idioms of the Ruby language.

The manner and parlance of Ruby that makes it a joy to work with sets of data is, of course, present in IronRuby — couple that with WPF’s capability to produce great graphics quickly and easily, and I hope you can visualise the possibilities of data visualisation using these two things. Using IronRuby and WPF together to create visual representations of data and infographics is very exciting to me. Although today, with this project, we’re only presenting one simple piece of information – the time – the potential is much grander.

My day-to-day job is centred around software development and UI design, specifically in the realm of healthcare, and if you were to pay a visit to our office you would behold, directly above my desk, a large plasma TV with a constantly rotating, animated slideshow of charts and infographics to help members of our team do their jobs. It’s an app powered by WPF which never fails to spark some conversation with visitors whose gaze has been hooked. If only it was written in IronRuby, the pleasantly low ceremony and reduced pre-processing time for my brain would have helped greatly.

Edd Morgan blog

Related Links:

Getting PhP and Ruby working on Windows Azure and SQL Azure


Note: Cross posted from IUpdateable from Eric Nelson.

Permalink

When Windows Azure was first released in 2008 the only programming languages you could use were .NET languages such as Visual Basic and C# and the applications you built had to run in Partial Trust (Similar to ASP.NET Medium Trust).

In the interim we have made a number of changes including allowing applications to run in full trust, native code is now supported (no longer had to be managed code such as C#) and we support FastCGI applications. Which means:

  • Windows Azure supports the Internet Information Server (IIS) 7.0 FastCGI module, so that you can host web roles that require an interpreter, or that are written in native code.
  • You can host web roles and worker roles written in managed code under Windows Azure full trust. A role running under full trust can call .NET libraries requiring full trust, read the local server registry, and call native code libraries.
  • You can develop a service in native code and test and publish this service to Windows Azure. A role running native code can interact with the Windows Azure runtime by calling functions in the Microsoft Service Hosting Runtime Library.

As a result it is now possible to build applications for Windows Azure using languages such as Java, PhP and Ruby.  A couple of UK examples have popped up in the last few days.

PhP on Windows Azure

Last Saturday at the Open Space Coding Day on Azure,  Martin Beeby and another developer sat down to get PhP running on Azure. It turned out to be surprisingly straightforward to do.

Ruby on Rails on Windows Azure and SQL Azure

Last week Nick Hill in Microsoft UK Consulting Services posted on getting Ruby on Rails running on Azure after a customer engagement.

Related Links

Guest Post: What's IronRuby, and how do I put it on Rails?


Note: Cross posted from IUpdateable from Eric Nelson.

Permalink

[You might want to also read other GuestPosts on my blog – or contribute one?]

On the 26th and 27th of March (2010) myself and Edd Morgan of Microsoft will be popping along to the Scottish Ruby Conference. I dabble with Ruby and I am a huge fan whilst Edd is a “proper Ruby developer”. Hence I asked Edd if he was interested in creating a guest post for my blog on IronRuby.

If you should stumble across this post and happen to be attending the Scottish Ruby Conference, then please do keep a look out for myself and Edd. We would both love to chat about all things Ruby and IronRuby.

This is me and Edd (his head is a lot bigger than mine):

eric09 image

What’s IronRuby, and how do I put it on Rails?

IronRuby for Rubyists

IronRuby is Microsoft’s implementation of the Ruby language we all know and love with the added bonus of interoperability with the .NET framework — the Iron in the name is actually an acronym for ‘Implementation running on .NET’. It’s supported by the .NET Common Language Runtime as well as, albeit unofficially, the Mono project. You’d be forgiven for harbouring some question in your mind about running a dynamic language such as Ruby atop the CLR – that’s where the DLR (Dynamic Language Runtime) comes in. The DLR is Microsoft’s way of providing dynamic language capability on top of the CLR.

Both IronRuby and the DLR are, as part of Microsoft’s commitment to open source software, available as part of the Microsoft Public License on GitHub and CodePlex respectively.

IronRuby is designed to be the Ruby implementation of choice on Windows and as such boasts solid compatability and some fantastic performance. IronRuby, at the time of writing, currently hits about an 86% pass rate against RubySpec. For comparison, the MRI interpreter passes about 98%. It also benchmarks considerably (more than 4x) faster than MRI 1.8, as Antonia Cangiano demonstrates with his suite of Ruby benchmarks.

Besides being reasonably compatible and performant, IronRuby’s real strength is it’s interoperability with the .NET standard library and .NET assemblies in general. With no more than a call to ‘require’, you can begin using your .NET classes and the framework at large in your Ruby code — ‘automatically’ providing IronRuby with substantial functionality over the standard Ruby library. require will happily take, as a string, any valid .NET assembly name. Just to illustrate how easy and seamless this exchange between Ruby and .NET is, let’s create a new Windows Form from within Ruby.

require 'System.Windows.Forms'
System::Windows::Forms::Form.new.show

 

Run that through ir, the IronRuby interpreter, and you should have upon your screen a standard Windows form! It’ll be empty and boring, but what do you expect for just 2 lines? The beauty of this is that it requires notably less ceremony than it’s C# or VB counterpart. As you might imagine, you could programmatically add some controls to this new Form:

require 'System.Windows.Forms'
form = System::Windows::Forms::Form.new
lbl = System::Windows::Forms::Label.new
lbl.text = "foo"
form.controls.add(lbl)
form.show

 

Methods that exist in the .NET classes are available in IronRuby in two forms: familiar ruby lowercase form (controls.add) and traditional C# camelcase form (ToString). Since Ruby has no concept of properties in the way most .NET languages do (known as fields to the CLR), properties are implemented in IronRuby as accessor and mutator methods (foo.bar() and foo.bar=()). Let’s assume I have MyClassLibrary.dll, the following C# namespace and class Person:

namespace MyClassLibrary
{
    public class Person
    {
        public string Name { get; set; }

        public string Introduce()
        {
            return String.Format("Hi, I'm {0}", Name);
        }
    }
}

 

This is also completely accessible in IronRuby.

require 'MyClassLibrary'
me = MyClassLibrary::Person.new
me # => MyClassLibrary.Person
me.name = "Edd"
me.name #=> 'Edd'
me.introduce # => 'Hi, I'm Edd'

 

This pure interoperability presents very promising reusability of already existing code in IronRuby projects as well as some interesting metaprogramming possibilities.

Note: Watch your casing! If you have a .NET assembly of your own you want to require in your IronRuby, ensure that your .NET code is using proper Upper CamelCase for names of namespaces and classes. .NET classes can directly translate into Ruby classes and .NET namespaces are represented as Ruby modules — both of these are always named using Upper CamelCase in Ruby. If your source names in your .NET code do not match this convention, they cannot be included in your Ruby code.

Riding the irails?

So let’s get to the point. I think it’s a solid bet to make that a large proportion of Ruby programmers are familiar with the Rails framework – perhaps it’s even safe to assume that most were first led to the Ruby language by the siren song of the Rails framework itself.

Long story short, IronRuby is compatible enough to run Rails. Some things of note though:

  • IronRuby has some of it’s own scripts that take over the jobs of irb, gem, rake and indeed rails — named iirb, igem, irake and irails respectively. This is to distinguish itself from the regular Ruby you probably have installed alongside it.
    • However, the IronRuby site disclaims that these scripts will be deprecated in favour of calling ir with the -S <task> flag (currently available in the 1.0 RCs).
  • With it’s separation from other Ruby installations, IronRuby does not share RubyGems with them (as can be reflected in calling igem list) — although it can.
  • SQLite is quickly becoming the prefered database for development apps. Running under IronRuby, the sqlite3-ruby gem won’t do. Be sure to install the sqlite3-ironruby gem.

Note: The MSI IronRuby installer will extract IronRuby to “C:/Program Files/IronRuby x.x” — if you installed IronRuby this way, I advise moving this installation to a directory that does not involve any spaces (and update your PATH appropriately) to avoid any problems with scripts that do not appropriately handle path names.

As stated above, IronRuby is currently very compatible with Ruby 1.8.6. There should be very little problem running an already existing Rails app with IronRuby (run your script/server script with ir — see for yourself).

Since you’re probably deploying on Windows, IronRuby takes advantage of it’s .NET compatibility to provide SQL Server support (along with Windows integrated security) through the ironruby-sqlserver gem — which requires a different DBI library than the one distributed with Rails, namely ironruby-dbi, but ironruby-sqlserver should take care of that for you. Configuration for this adapter in your database.yml looks like this:

development:
  mode: ADONET
  adapter: sqlserver
  host: HOSTNAME\INSTANCE
  database: application_development
  integrated_security: true

 

Very little beyond this is required to take advantage of IronRuby in your Ruby on Rails applications. Running these applications on a production environment is a huge topic with so many different options — primarily deploying to IIS or Windows Azure, a new, incredibly viable and efficient platform on which to run your web applications and web services that’s just perfect for anything running on .NET.

Hopefully by now you have been made aware of the great advantages that arise from combining a fluid, dynamic language such as Ruby with the powerful .NET framework and are wondering; “can I write an ASP.NET MVC application in IronRuby?” or “how well does IronRuby play with other technologies such as Silverlight or its parent WPF for outside-the-browser applications?”. Again, if you are attending the Scottish Ruby Conference in March 2010 and would like further information or answers to these questions, please feel free to speak with us at the event.

Edd Morgan

Open Space Code day on Azure in Birmingham was great fun – thanks all


Note: Cross posted from IUpdateable from Eric Nelson.

Permalink

On Saturday 35(ish) developers met up on rainy day in Birmingham to take part in an Open Space Code day on the Windows Azure Platform.

Around 5 of us had experience of Open Space meetings or developing for Azure prior to the day – and I think only two of us had experience of both 🙂 As I was on point to keynote the day and make sure it was a success, I did turn up with a few concerns matched by a good deal of excitement. My primary concern was that people would expect to be trained – and the Open Space format is most definitely not that. But it is about learning and it is about contributing and helping others to learn.

I have created a separate post on the Open Space Technology format if you are new to it.

To cut to the chase – it all worked out stunningly well. I had a great time throughout and everyone seemed to leave happy.

image 

Me – near the end when it was clear people were having fun!

At the end of the session I went round everyone in the room to get them to share something they had learnt during the day (which I will post on later – the good and the bad). We also did a few show of hands which TBH blew me away.

  • 100% managed to get a Windows Azure application running locally and deployed and running in the cloud. (Actually one chap didn’t – but he emailed me later on Sunday to say he had sorted out the problem – a typo)
  • 100% would recommend the format of an Open Space Code day to a colleague
  • 100% plan to spend more time looking at Azure in the future.

100% on all three is awesome and is a testimony to the openness of those who attended to try out something new, as much as it is to the Open Space format and the Azure technologies.

I did want to thank:

  • Dave Evans who made it all happen,from inception through to event registration, biscuits, fun lunch at the local pub and much more. Top man.
  • Hugo Russell for hosting us throughout the day and allowing us to use the building (the excellent Birmingham Science Park) – and for sorting out the powercut and the wireless!
  • Geff Lombardi for doing lots of “grunt work” during the day
  • My colleagues David Gristwood and Martin Beeby for sharing the load during the day
  • Everyone who attended for helping everyone to their left (You needed to have been there!)

On the day we had:

  • Lots of “hello world” level apps being built
  • Lots of migrations of databases to SQL Azure – including production databases
  • AppFabric development
  • MVC development
  • PHP development
  • WCF development
  • Hybrid on-premise and cloud being tested
  • VS2008 and VS2010 RC

A few others have also posted about the event:

And lots of tweets including:

image 

Related Links:

Excellent example of explaining the details of a PaaS offering – alas it isn’t Azure


Note: Cross posted from IUpdateable from Eric Nelson.

Permalink

The Windows Azure Platform is now live. It is showcased by a terrifically exciting web site which tells you what it is and makes it incredibly simple to sign up.

Actually, it isn’t. We have http://www.microsoft.com/windowsazure/. It is an “ok” site I suppose. The detail is there. It has the occasional decent enough diagram, but TBH its a maze of words, pages, whitepapers, links, videos, downloads. I dislike it a lot. Sorry. I think the technology is great but the site is not.

I would encourage you to take two minutes to check out just how well it can be done. But remember – you must come back as you want to use the Windows Azure Platform!!

Meet Heroku. A PaaS offering for Ruby developers. More specifically check out the “How it Works” and “Pricing” tabs.

How it Works is presented a a series of excellent and interactive diagrams. This snip doesn’t do it justice:

image

And Pricing is even more amazing. It is actually fun! Yes – you heard me, it is fun!

I was tempted by a Fugu but settled on a Koi, 13 Dynos and 19 Workers. Enough said 🙂

image

I hope someone in marketing stumbles across this post or better still the Heroku website. Fingers crossed it is sooner rather than later.

In the meantime, why not join the UK Azure community and be amongst friends 🙂