Cloud Computing - CloudCamp Sydney

by Luis Catarino 4. March 2010 11:47

Last night I attended CloudCamp Sydney.  It was pitched as an “unconference” format where quick 5 mins presentations are made and upon completion the attendees outline points they wish to speak about.  Those ideas are grouped into categories and then breakout sessions are created.

Conceptually the idea is great however, when we got to those sessions I found that not having a dedicated leader for the session meant the topic often moved into different areas.

Enough about the structure and more about the actual content.

As early adopters of Cloud Computing we identify issues and concerns having greater importance compared to actual uptake of the technology.

It was interesting to hear the delegates last night speak about what they wanted from the “Cloud” providers.

“Standards” is what everyone was crying out for.  The problem with standards is that when its created those who invested in creating those standards are set to lose the most financially.  The IT industry is quite well known for creating standards and then choosing not to either accept them or implement them.

“Data portability” between providers was the other main sticking point with uptake.  There is a fear that when a company or user stops paying for the service, the Cloud provider simply turns them off and they have now lost their data.

This is a valid point, but how one company stores data (and therefore converts that data into information) is what makes people either buy or use that application.  Those different methods are called IP.  Again, why would businesses want to share IP amongst competitors if there was no financial benefit?

What was positive about the night was that this particular movement in the industry begins to open new untapped market opportunities, Services.  Across all industries, service companies are making good headway into providing what suppliers can’t, customer service, support, etc.

As this industry (Cloud Computing) is starting to gain legs, integration, migration, data management services are all new verticals that will spring into the foreground for people/companies to make a living from.

Overall, it was an interesting evening to attend.  The night not only provided the standard “Cloud Provider” pitches but allowed for attendees to have general chats and discussions.  One point I would make, is that I would have preferred to have a mediator in each breakout session to ensure the conversation/discussion stayed on topic.

Interesting times ahead for “Cloud” Computing and what will the catalyst be for businesses to take up Cloud Computing?

Tags: , , ,

Cloud Computing | Azure

Running MSBuild 4.0 and MSBuild 3.5 on Continuous Integration

by Luis Catarino 25. February 2010 10:38

With Visual Studio 2010 RC released recently, we jumped on the release and began to code with VS2010.  One issue that popped up was that now all builds were targeting MSBuild 4.0.

That doesn’t seem to be a big problem until our CruiseControl CI server kicked in, downloaded our updated code and failed building the upgraded projects.

Fortunately there is a very quick solution to this little problem.  There are a couple of requirements.

  1. You need to have VS2010 RC installed somewhere
  2. You need to download the .Net Framework 4.0 (I recommend the full version and not just the Client Profile, it ensures you don’t miss anything)

To fix, do the following:

  1. download and install the .Net Framework 4.0 on the CI server (then restart the server)
  2. on the computer where VS2010 RC is installed go to the following path:
    %programfiles%\MSBuild\Microsoft\VisualStudio
  3. copy the v10.0 folder located in that directory into the CI server at the same path (or wherever our MSbuild path is on the CI server)
  4. Once that is done, edit the ccnet.config file at the <msbuild><executable> tag and change it to the new .Net 4.0 Framework installed (you should only need to change the section “\v3.5\” to “\v4.0.xxxxx\”

Hope this helps

Tags: , , ,

MSBuild | CruiseControl | CI | .Net 4.0

The StartupCamp III Experience and ChefMeUp.com

by Sarmaad Amin 22. February 2010 01:00

On Friday 19th February 2010, a group of 38 individual gather to race through the next 2 nights and 3 days to build, demo and pitch new concepts, ideas and ultimately demonstrate innovation.

Yes, I was one of these 38, enduring two days with only 2.5 hours of sleep. Nothing else mattered, but delivering the promised goods. My team of 4 – successfully and proudly delivered this service: ChefMeUp.com

Since this is a technical blog, I wont bore you with the emotional details of the three days, but I will introduce you to the team that made this happen.

Casey Butler – Role: PR/Marketing
Casey is a start-up founder and a musician who has come to StartupCamp Sydney to practice business and polish his skills for the real world. His role in building the business case and drumming the PR and marketing is critical to the success of the project. BTW, he flew all the way from Melbourne to be here in Sydney.

Dave Trindall – Role: Developer
Dave is an active developer specialises in the Microsoft technology stack. His dedication to development have lead him to StartupCamp Sydney III to demonstrate his knowledge and experience. Dave’s newest website launch is his meaningful short URL service found at: http://ko.ly/

Brett Samuel – Role: Graphic Designer
Brett’s background is business development and entrepreneurship. has successfully established and sold his last business, Brett gravitated to StartupCamp Sydney III to learn and share the experience of a new atmosphere and innovation.

Sarmaad Amin – Role: Developer
Sarmaad is a .Net enterprise application developer that have worked on may successful IT projects. He came to StartupCamp Sydney III to explore new innovation and develop ideas in a different environment that cultivate innovation. His experience in software development contributed to the successful completion and launch of the project at StartupCamp Sydney.

“ChefMeUp.com is a project born in 11 hours , from zero code to completion 100% borrowed code free”

That’s right, the website was completed and fully functional with 11 hours of nothing but pure development and excitement.

This is a short run down of the technology.

I have opt-in to use LLBLGen Pro as our ORM layer with Microsoft SQL Server 2008. The front end is designed and coded using ASP.NET MVC 2 RC 2, yes, using Visual Studio 2010 RC.

I have to say, this is the fasted development I have been involved in, even for a fully functional prototype and without using the MVC framework, I doubt it would have finished on time.

the features of the application includes:

  • complete login/registration system for Chefs to list their services
  • paypal integration for registration payment
  • twitter integration for posting to twitter network and update from it.
  • Bing map integration to display the chefs/restaurant registered in the network.

basically all the necessary plumping to operate a web 2.0 style vertical industry service directory business. which in our case we choose Chef and other cooking services.

have a look at our presentation. BTW, I wasn’t there because I was building the better website… ;)

Check out the website ChefMeUp.com and let me know what you thing and if you are interested in the source code, send me an email or leave a comment on this post and I would send you a copy.

now to go and get some more sleep, happy coding…

kick it on DotNetKicks.com

Tags: , , , ,

Integration | Project

IDP Solutions Sponsors Online Retailer Exhibition

by Luis Catarino 24. January 2010 18:09

IDP Solutions’ new soon to be released product, MYOBSyncis the driving force in deciding to sponsor and exhibit at the 2nd annual Online Retailer Expo and Conferenceto be held in Sydney in July.

Over the past few years IDP Solutionshas provided many customers with solutions to manage online stores and capture data and convert that into important business information.

With all that knowledge of what online business owners required we took the step into creating MYOBSync.  MYOBSync does what is says, Syncs between MYOB and your online cart.

Make sure you put the dates between the 6th and 9th of July in your calendar to come see us at the Expo.  We’ll be in stall 105.

Hope to see you then.

Tags:

eCommerce | Integration | MYOBSync

NetRegistry Reseller API with .Net 3.5 WCF Service

by Sarmaad Amin 7. September 2009 21:43

kick it on DotNetKicks.com

Background

Web services are not a new topic for web developers. Companies are slowly embracing this technology and are moving to incorporating them in their service offering. The beauty of web services is it makes available to developers the functionally and flexibility needed to come up with innovative tools and solutions.

NetRegistry have just release a beta version of a reseller API tool. This will enable their resellers to integrate their core “customer facing” services and portals directly with NetRegistry.

This post showcase the usage of this API within the ASP.NET environment and answers the question on how to use NetRegistry API within .net 3.5. It also utilises WCF (Windows Communication Foundation) to speedup development and creates a stable bridging infrastructure between NetRegistry and your .Net application.

Walkthrough

In this walkthrough, I will demonstrate how you can connect to the reseller API using .Net 3.5 WCF Services and implementing a simple call to the service API to check for a domain name availability. Using the NetRegistry API documentation you can extend this example to place an order for the domain and check the order status.

Consult your NetRegistry API documentation for more details.

The best way to effectively demonstrate the technique, I will build a simple web application that will perform a domain search and return the results of Available, Unavailable and Errors.

The source code for this walkthrough is available for download the the end of this post. You must have .net 3.5 SP1 installed and Visual Studio 2008.

domain_search 

Screenshot of the final view of the website

Step #1: Create a web application and add a service reference

Create a new web application project in Visual Studio. once the project is created, right click on the application node in solution explorer and click “Add a Service Reference”

addservicclick on the image to expand 

On the service dialog, copy and paste the service URL supplied by NetRegistry from documentation, then click “Go”. You will be prompted with security authentication request box, supply your API username and password. These details are NOT your console username and password. Contact NetRegistry about how to get these details.

servicesecurityclick on the image to expand

after a successful authentication, you can go ahead and supply the namespace for this service. In this example, I used “NRService” and click “Ok”. This how the screen should look like.

servicewsdl click on the image to expand

At this stage Visual Studio would generated all the necessary default configuration and the service objects to send requests to the service. However, this is not enough to start sending requests to the API. By defaults, WCF has configured this API to use “basicHttpBinding”, which is not compatible with the NetRegistry API service.

Step #2: Modify WCF default configuration

WCF configuration resides in “web.config” file of the web application project within the tags:

<system.serviceModel>
</system.serviceModel>

replace the default configuration with these details:

<system.serviceModel>
  <bindings>
    <customBinding>
      <binding name="IResellerAPIServiceSoapBinding">        
        <mtomMessageEncoding messageVersion="Soap11"/>        
        <httpsTransport manualAddressing="false"                          
                        maxBufferPoolSize="524288"                          
                        maxReceivedMessageSize="65536"                          
                        allowCookies="false"                          
                        authenticationScheme="Basic"                          
                        bypassProxyOnLocal="false"                          
                        hostNameComparisonMode="StrongWildcard"                          
                        maxBufferSize="65536"                          
                        transferMode="Buffered"                          
                        useDefaultWebProxy="true"                          
                        requireClientCertificate="false"/>      
      </binding>    
    </customBinding>  
  </bindings>  
  <client>    
    <endpoint      
      address="https://theconsole.netregistry.com.au/external/services/ResellerAPIService/"      
      binding="customBinding"      
      bindingConfiguration="IResellerAPIServiceSoapBinding"      
      contract="NRService.ResellerAPIService"      
      name="ResellerAPIServicePort"/>  
  </client>
</system.serviceModel>

Notice that I am using “customBinding” and “Soap11” in “mtomMessageEncoding” version. This is important to let WCF know how to decode/encode the SOAP messages send/received from NetRegistry API.

Also, Its very important to note that the address in “endpoint” has “https://”. Because for some reason WCF “Add a Service Reference” tool replaced “https://” with “http://”. If this is left unchecked the service call will error due to security channel not established.

Now our service is ready to be called and WCF will know how to handle the messages correctly.

Step #3: Authentication and Our first call

NetRegistry Reseller API requires that you authenticate with the API username and password on every call. This is achieved by suppling the credential details to the service object after you initiate it.

var service = new ResellerAPIServiceClient()
service.ChannelFactory.Credentials.UserName.UserName = "APIusername";
service.ChannelFactory.Credentials.UserName.Password = "APIpassword";

Let continue and make our call to search for a domain name availability.

resellerAPIResult results = service.domainLookup( "idpsolutions.com.au" );

 

This call will send the data to NetRegistry API to search for the domain name “idpsolutions.com.au”. The result of the search will be held in the “results” variable.

To see wither the domain is Available, Unavailable or if the result returned an error. I use the following:

if ( results.errors != null )
//call failed - display the error to the user
lblFailed.Text = string.Format( "Error: {0} - {1}",
results.errors[0].errorCode,
results.errors[0].errorMsg );

if (results.fields.Length > 0)
{
//call success - display the results
lblResult.Text = string.Format("{0} is {1}",
results.fields[1].value,
results.fields[0].value);

//check the results to see if the domain available or not, change the colour of the label
this.lblResult.ForeColor = results.fields[0].value.ToLower()=="AVAILABLE".ToLower()
? Color.Green
: Color.Black;
}
 

That’s it. Now you can follow the documentation provided by NetRegistry to use the functionality provided in the API to build your service using ASP.Net 3.5 with WCF.

Leave any question or comments if you need any further help.

Happy Coding …

Live Demo

http://domainlookup.sarmaad.com

Download Source Code

http://sarmaad.com/files/NetRegistry_API_Sample.zip

You will need to have your own NetRegistry API username and password to successfully use this source code.

Tags: , , ,

Reference | Web Services

CHEP Pallet Management System

by Sarmaad Amin 28. August 2009 03:48

Well, another nice day in the office today… just finalised the last minute touches on our asset management system solution, that is due for a demo anytime now. very happy with the results so far.

One of our clients has approached us about a month ago to develop a CHEP pallet management system for their organisation and now we demo it to them.

this is our first demo to the stakeholders of the project and I am really excited to get their feedback on our hard work. enough talking… this time I am including a screenshot of couple of pages of the application…

pallets_stocktake

This screenshot is from the administration system.
showing the stocktake list that are entered from deferent sites.

As you can see, Its a web based pallet management system. the application if fully Ajaxified which makes it easy to use and operate.

I have also included this screenshot from the site portal showing the process of sending pallets from Sydney location to another CHEP depo.

site_movement_in

this is by far one of the nicest applications I have ever worked on. it uses few different technologies and tools.
We used Microsoft Queue Messaging System to place a job to generate the export files to sent to CHEP for invoicing and we used Telerik Reporting component to generate the report needed by management.

well, this application might be up and running now, but we are working on some really nice dashboard tools the aim is to provide a way for the administrator to build their dashboard by selecting the type of chart and “plug-in” the parameters to configure the chart.

once that done, I will definitely keep you posted…

for now, I am out. Have fun and code well…

Tags: , , , ,

Project

Local Lens Business Directory is Launched

by Sarmaad Amin 7. August 2009 01:04

LocalLens is an online business directory built around the concept of building communities and focusing on offering a multitude of features to businesses. Enough on the plug, lets talk about the technology…

It might look like just another business directory. However, what’s under the hood what really makes it tick for me.

I have been contributing to this project for just over 6 months now. My main role is to build the architecture and the framework to be as flexible, robust and functional as possible, yet still maintain best coding practises and use well defined development patterns.

So, what under the hood?

Database Server: MS SQL 2008 as data storage
Language and frameworks: c#, .Net 3.5, Linq, Web Services, JSON
ORM: LLBLGEN as our database abstraction layer 
Logging: log4net as our logging platform
UI & Reporting Tools: Telerik AJAX .Net Controls
Search Tool: linq to lucene, lucene.net
Patterns Used: Singleton, Provider, DDD, TDD

locallens is built using 4 tires that work together to bring the website to life, allowing for further growth and integration with other systems.

An example would be to extend the businesses and events to an iPhone application that would serve the data straight out of the website to the iphone app, without any further development.

I will spend more time in another post talking about some techniques that I have useful in using LLBLGEN as our ORM platform in multi-tired web applications.

for now, if you like to have a look at the website and give me a feedback that would be great.

locallens.com.au (keep in mind, its currently in RC1 and not all the content there yet)

Tags: , , ,

Project

ASP.Net Continuous Integration and Deployment

by Sarmaad Amin 16. July 2009 12:00

I am looking at automating the nightly builds of our web application and it would be really nice if we can deploy the successful build to a test server.

the scenario is:

Every night at a particular hour, the source code will be updated from our SVN server. Then a build goes down using a continuous integration tool like CruiseControl.NET utilizing MSBuild. Then deploy the successful build.

I did a quick Google search, and found this post:

 ASP.NET website Continuous Integration+Deployment using CruiseControl.NET, Subversion, MSBuild and Robocopy

It is by far the most informative, step by step answer to the question. The only exception on the post is that I need to preserve user data (uploaded data). I will be using his instruction to build this solution on our development server.

Will keep you updated.

Tags: ,

Reference

Windows Live Writer

by Sarmaad Amin 16. July 2009 03:04

I have just installed Windows Live writer to test with the new release of BlogEngine.Net 1.5

I must say, this would make my life easier in posting blog entries and it will make me post frequently.

sure, my last post was a while back!, I know what you thinking, just lazy. no, that’s not true.

I have been really busy writing code! and venturing into some fresh territory the iPhone!!

I do have a lot to share with you, but not now. I will be posting some interesting development reports.

so check back real soon.

Tags:

Misc

.Net open source ecommerce platforms - where are they

by Sarmaad Amin 30. November 2008 23:42

Why is it so hard to find a .net open source ecommerce platform?

I am not really sure, after doing a lot of searching all I could really find worth mentions is dash commerce and MVC store front but yet finding a php ecommerce platforms it so easy.

I came across this post 9 kick ass Open source E-commerce platforms reviewed that lists top open source ecommerce projects but only one that is a .net project.

Where are the .Net coders, don't we (.net developers) have a contributing community that could rival the phpers.

In the next few months, I will be diving in a conversation about ecommerce platforms and attempt to review the open source project (.net) and try to highlight the positives and the missing features. What I would really like is to draw a conclusions on how far is the gap between PHP and .Net as product maturity and why the .net community is really lacking behind the rest of the open source movements.

I will be reporting back here, on my finding of the projects "out there" and try to catalogue them.

any help from you would not go a stray, so don't be shy, let me know here and I will do my best to follow it up.

Tags: ,

eCommerce | Open Source

Powered by BlogEngine.NET 1.5.0.7
Theme by Mads Kristensen

Sarmaad Amin


Director and solution architect at IDP Solutions specialising in .net web application development

Recent Comments

Comment RSS

Technorati

Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my company's view in anyway.

© Copyright 2009 Sarmaad.com