Saturday, May 19, 2012

Getting Started with EPiServer

 

Although I’m not an specialized EPiServer developer, I have had to do some research and benchmarking of EPiServer against other CMS products out there (post is on the way!).

EPiServer is a popular (more popular in Europe than in USA by the way) CMS platform. It provides a platform and several modules and tools to manage content, communities, communications and commerce.

Although I have a lot more experience building custom CMS solutions using .NET and ASP.NET MVC, I have had several clients in the past that require an existing product that can provide required functionality out of the box and reduce the need of internal development teams for maintenance and platform support.

In this post I’ll try to get you started with EPiServer and get it up and running so you can start creating sites right of the bat.

First, you need to understand the hardware needs and get the servers in place. The recommended initial development setup should include one database server and one web server:

  1. DB Server: MS SQL Server 2008 R2 – v10.0.27.46
  2. Web Server: EPiServer, IIS, CI Server

Notice that the version of SQL Server will depend on the version of EPiServer you need to install. 

Now, you need to acquire the EpiServer Development Demo Licenses. EPiServer allows you to request developer licenses for the Demo products, which will allow you to download and install EPiServer and use it for a period of time. This will get you started. You can always acquire the  production licenses later (when the client pays for them for example !).

You should at least get demo licenses for EPiServer CMS and EPiServer Composer (current version at the moment of this writing is v6.0 for CMS and 4.0 for Composer). When requesting the demo license generation for the products you want to install, notice that the licenses are generated for specific IP addresses, so you need to know the server IP address prior to generating the license.

Now go ahead and download the installers for each product on the EPiServer downloads page. Make sure you match the version that you are supposed to run on your production environment. You want your development environment to mirror the product versions you will have in the production environment. The product version should be the same for development, QA, staging and production.

To download installers you need to be register as a user in the EPiServer World community. Once you have logged in, you can download the individual products.

Once you have downloaded the installers and have the demo licenses, you are good to go and install the products. Copy the installers to your server.

First, run the EPiServer CMS installer (setup.exe)

episerver_03

Read the End User License Agreement and check the box to accept it. Click OK next.

episerver_01

The installer will prepare the installation wizard.

episerver_02

Click next once the installation wizard starts.

episerver_04

Ok. Here you need to decide what you want to install. The first option will just install the application files, without any website sample or anything else. I would recommend to choose the Custom option instead and review which components and files you want. Is always good to install the sample websites so you can have something to work with out of the box and do some preliminary testing.

episerver_05

Choose what components you want and where to run from.

episerver_07

Click install to initiate the installation process once you have selected all the previous options.

episerver_08

Once the installation process finishes, you will get notified.

episerver_09

At this point you are done with the CMS installation part. You can launch the main Deployment Center and display the Getting Started guide.

episerver_10

The EPiServer CMS Deployment Center.

episerver_11

The EPiServer Getting Started Guide.

episerver_12

Now is time to install the EPiServer Composer module. Fire off the setup executable from the downloaded files.

episerver_13

Click next.

episerver_14

Click Install to initiate the composer installation.

episerver_15

Once the process completes, you are done.

episerver_16

Awesome! We are done with the installation. You have configured EPiServer CMS and Composer on your server and you are now ready to start building and deploying EPiServer powered sites.

I’ll keep an eye on the topic and hopefully publish a few posts about creating, managing and deploying sites using EPiServer. One part that is interesting to explore and share is how to integrate EPiServer with the CI process. I’ll definitely come back to this and share more information and tips on how to get this done.

Drop me a line or a comment if you would like specific topics to be covered or if you have any issues with the installation process. I’ll be more than happy to get back to you.

Cheers!

About Continuous Integration

 

ci01

Have you heard about continuous integration? I really hope that your answer is yes, because if not, you should take the time to learn about it, understand it and put it in place in your company as soon as possible !

Continuous Integration, known as CI, is the practice of continuously integrating code changes and new features into the code repository and the different development environments. Is all about increasing the quality control and reducing the time to implement fixes and deploy deliverables. Is based on the concept of small tasks and efforts, applied frequently.

There are a few main points that CI tries to tackle, among some of them we can mention:

  • Source control
  • Build automation
  • Regular commits
  • Automated testing
  • Automated deployment
  • Build transparency
  • Time to fix
  • Time to production

I could go over each topic and add my own experiences working on different companies, on different type of projects, in different countries, but instead, check out this great article from Martin Fowler regarding the ins and outs of continuous integration implementation.

One key advantage is for developers to quickly identify issues as soon as they are introduced, so they can be fixes as soon as possible without wasting time just to understand and find the problem.

Implementing a CI process in your development lifecycle is life saving and a requirement for any modern software development shop. The CI process empowers developers to have a better control over the cycle, increase code quality and implementation practices and reduce the time it takes to deploy code changes, including new features and bug fixes.

It encompasses source control techniques, build automation, unit testing, install and deployment processes, enhancing the development process.

There are several tools out there that are relatively easy to setup and with different price plans according to different scenarios and needs. Among the most popular, you will find:

Most of my experience has been with Team Foundation Server and TeamCity. TFS is particularly great for .NET projects and if you can afford the TFS license and server setup and maintenance costs. I definitely think that TFS is probably one of the best CI servers out there. However, it is expensive and developers from other platforms and technologies have a hard time getting into it.

TeamCity, from the guys of JetBrains on the other side, is a cheap option and really easy to setup. Is quick and efficient, and plays well with different source control tools, unit test frameworks and different platforms and technologies. I highly recommend you to try it out.

Check out my latest post on how to setup TeamCity step by step.

If you want to understand more about the CI process and how to implement it in your company, I highly recommend you to check Marcin Kawalerowicz book, “Continuous Integration in .NET”. The book is well written, easy to follow and takes you from the basics of the CI process implementation to advance topics, using three CI servers, TeamCity, TFS and Cruise Control as examples.

I hope that this post gets you started if you haven’t already and for those of you who are already on the CI boat, I hope I can throw in some useful references.

Cheers!

Setup TeamCity CI Server Step-by-Step

 

tc

TeamCity is one of the great CI tools out there. It’s pricing is affordable providing different licensing scenarios and being free for small teams with less that 20 build configurations. Clean interface and easy to setup, configure and use, is an excellent option to get your CI process in place without paying expensive fees or requiring expensive dedicated servers and maintenance resources.

I wanted to write a simple step by step guide on how to install TeamCity that you can follow along easily. Hopefully you will find it straight forward and helpful.

Before you start downloading and installing TeamCity, you should first take the time to discuss it in your company with your superiors, tech gurus and team colleagues. Remember that there is never one solution for every scenario, and although TeamCity is a great easy to setup-and-use product, it might not be the best fit for your specific needs. There are several other CI tools out there, so my advise is to first gather your CI requirements and discuss with your team what is the best CI strategy and tools for your particular needs.

If you choose TeamCity as your CI server, welcome on-board!

First, you need to have a server where you can install TeamCity to run the CI builds. Generally this is the same server you use for your development environments. Although it is recommended that you dedicate a server for the CI builds, you will find it quite common to use your development server also for the CI server without issues. 

By this point, you should have also defined your source control (also known as revision control) tools defined and in use. TeamCity plays well with the most popular source control tools such as SVN.

Then, you will need to download the latest TeamCity bits from the JetBrains site.

teamcity_setup_00

teamcity_setup_01

Now that you have your server, source control tools and the TeamCity installer ready, let’s get started with the installation process.

Go ahead and run the TeamCity installer executable. You will be presented with a the license agreement. Read through it and then accept it.

teamcity_setup_03

Next, choose a location for the files.

teamcity_setup_05

Choose the components to install.

teamcity_setup_06

Specify the configuration directory. You can leave the default one.

teamcity_setup_07

Click next and TeamCity will begin the installation.

teamcity_setup_08

Once the installation is about to finish, the wizard will ask you to define the port for the TeamCity web administration interface. It is recommended that you use port 8080 for it.

teamcity_setup_09

Then configure the Build Agent properties.

teamcity_setup_10

When clicking Save, the wizard will display a saving confirmation with the path to the properties file.

teamcity_setup_11

The next step is for you to define the TeamCity service account. Generally you will leave to the default, SYSTEM Account, but you can make it run under a user account too if needed.

teamcity_setup_12

Then select to start the TeamCity services.

teamcity_setup_13

You are done with the installation process.

teamcity_setup_14

If the admin web console doesn’t open automatically, you can start it by opening your browser and going to http://localhost:8080. Your first task is to create the administrator user account.

teamcity_setup_15

Click on the proceed button.

teamcity_setup_16

Rad and accept the agreement.

teamcity_setup_17

Enter the details for the Administrator account. This will be the master admin account for the TeamCity CI server. Make sure to securely save this information and communicate it to your team colleagues that will need access.

teamcity_setup_18

Once you are done, you will be redirected to TeamCity’s main page and you are ready to create your CI builds!

teamcity_setup_20

Congratulations! You have installed your TeamCity CI server and you are ready to implement your CI Builds and practices on your development process. Make sure to check TeamCity’s documentation, installation reference, general CI topics and CI common practices.

I’ll hopefully publish a few posts on build configuration techniques, but please leave me a comment if you are interested in more advance TeamCity build configuration topics.

Enabling Table Changes on SQL Server Management Studio

 

This has probably happened to you several times already, and you will always need to enable table modification the first time you use the SQL Server Management Studio.

The issue is that by default, SQL Server Management Studio doesn’t allow you to save changes on SQL tables that require the table to be dropped and re-created. This is a security feature that prevents table changes, which might be useful for production or staging environments, but definitely annoying for development environments (local or remote).

If you try to save a table change and the table recreation is not being allowed, you will get the following error:

01

To allow table changes to be saved, you need to modify the table options on the SQL Server Management Studio designers. To do so, open the Options window by clicking on Tools/Options.

02

Then select the Designers section from the left panel and uncheck the “Prevent saving changes that require table re-creation”, as shown in the following screenshot.

03

Once you click OK, the changes will take place and you will be able to save the table changes you do through the SQL Server Management Studio designer views. Just make sure that this is not allowed on the production environment !

Cheers.

Wednesday, May 16, 2012

Windows Phone Tip: How to Access the App Manifest


There will be times where you want to access the Windows Phone Application Manifest in runtime and be able to get specific elements or attributes. This is quite straight forward to achieve and here's how it is done.

First, make sure to add a reference to System.Xml.Linq in your project.

Second, add the using statement in your code file


And finally, implement the method that loads and parses the WMAppManifest.xml file and gets the information you need. The following method will get the application title.


You can access anything you might need from the app manifest. Take a look at the file on your app (located under your project's properties folder) and see what fits your needs!

Windows Phone Tip: URIs Rules



When developing frontend applications, especially on a platform like Silverlight and Windows Phone you will always need to load resources, whether from remote or local locations, you need to deal with URIs.

On Windows Phone there are a few rules regarding the usage of URIs to load resources, which might be difficult to remember. In particular, remembering when to use the leading forward slash.

So, here's a list of the most important ones for your reference.
  • Navigation URIs must have a leading slash.
  • URIs pointing to a resource file (file's build action set to Resource) must not have a leading slash.
  • URIs pointing to a content file (file's build action set to Content) work both ways, slash or no slash.
Remember that when you set the build action of an asset file on the project to Resource, it will be embedded in the DLL created inside the .xap file, and it will effectively increase the size of the DLL, which might make the app slower to load. For most assets, you will want to set the build action to "Content" which will include the assets in the .xap file and they will be accessed directly by the app, but without having them embedded in the DLL, which in most cases is the desirable scenario.

Hope it helps and saves you some time!

Windows Phone Tip: Get the Assembly Version Number


When creating a Windows Phone application that will be submitted and hopefully published in the Marketplace,  is always a good idea to have an "About" page where users can find information about the application, the author and even support contact information. When doing this, you should always include the application version number, so you know which version of your application the user has. This will save you a lot of time when trying to solve issues or when trying to replicate certain behaviours.

Here is how you retrieve the application's assembly version number:



The code assumes you are running the method on the MainPage.xaml.cs and that's why it uses its type when retrieving the current assembly. If you were running this on the about page (called AboutPage.xaml) then you should use that as the type to get the assembly. When calling ToString() on the assembly returned, you will get the assembly properties (you can modify this on the project's assembly properties):

TestApp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

Remember that the assembly number is not related to the Marketplace application version number, but it is a good idea to keep both in sync, so make sure to review/update the assembly version number when you are publishing your app and choosing the version number for the Marketplace in the App Hub portal.

Tuesday, May 15, 2012

Tips for the Windows 8 Simulator

 

The Windows 8 simulator is quite handy to test how your app would behave on a device. You can preview your application interacting with the operating system and other apps, reacting to some common gestures and running under different orientations, namely landscape and portrait mode.

To launch the simulator for the first time, the easier way is to launch it from Visual Studio 2011 Beta. Instead of running it from the “Local Machine”, select to run your app on the simulator. Once the simulator launches, you can pin it to the taskbar.

Lab2_15

The simulator is also good to take screenshots of the app running on different orientations and layout arrangements. However, I found an annoying issue where if you try to take screenshots from the simulator running on “portrait orientation”, you get the screenshot without the simulator frame !

Although this might be desirable in certain cases, you will probably still need some images with the simulator frame on them.

To solve the issue, I found this trick. Minimize the simulator using the “-” button on the top right. Then maximize it by clicking on the taskbar icon. Now press Alt + PrintScreen and you should be able to get the simulator with the chrome in the image.

Lab2_09

Hope it helps and saves you some frustration!

Saturday, May 12, 2012

Windows 8 App Development Resources

 

win8

If you are having a hard time designing and making your Windows 8 application look like a true Metro style application, you will find the following resources helpful.

Those resources will get you going with your app design, user experience guidelines and base assets.

For development, there are some good documents for general overviews of the architecture and the functionality your apps will work with.

Have fun !

Windows 8 Tricks: Uninstalling Hidden Application Packages

 

windows8

It turns out that you can get into a situation where you can’t install an application on the current Windows 8 Consumer Preview from the Windows Store even if you can’t find that application anywhere in your Windows start screen. According to the UK MSDN Team, this can happen when an application is not uninstalled properly for some reason. What happens then is that when trying to install the app again, the OS finds records of the app being installed already so it doesn’t allows you to install it again.

Remember that for Windows 8 applications, everything will be installed as packages, which will be downloaded from the Windows Store. Right now, developers can use Visual Studio to create packages for sharing applications while on the Consumer Preview version. Because of this, developers need to be able to install and uninstall packages on demand.

The good news is that there’s a way for you to install and uninstall packages by commands, even if you can’t do it from the Windows Start screen or from the Control Panel. Follow the next steps to get it done.

  1. Make sure you have the Administrative Tools enabled (Right Swipe from the right border, click on settings and then on enable Admin Tools).
  2. Run the Windows PowerShell command prompt. Remember you need to run it as administrator (you can run it from the Start screen, which will take you to desktop mode. Then you can right click on the Windows Bar and pin it to the taskbar. Then you can right click on the taskbar app icon and run it as administrator )
  3. Type the following command: help appx. This will display the help for the appx command. You will see the list of commands to add an application package, get an application package or remove an application package.
  4. Execute the required command followed by the location and name of the application package, and you are done.

Hope it helps and saves you time !

Windows 8 Tricks: Renewing your Developer License

 

windows8

I have been attending a series of events here in the UK concerning Windows Phone and Windows 8, focusing on developing Metro style applications. I wanted to share a few helpful tricks with you.

Renewing your developer license

If you want/are developing applications for Windows 8, you will notice that Microsoft grants you a developer license when you install the development tools (Visual Studio 11 Beta). I discovered that you can actually renew/refresh this license on your machine, if you need it for any reason.

Here is how you do it:

  1. Enable Admin Tools in the Windows 8 Settings (Swipe from the right/Settings)
  2. Run the Windows PowerShell As Administrator (which should now be on your start screen)
  3. Type in the following command: Show-WindowsDeveloperLicenseRegistration

Done. That command will trigger the process of contacting the license server and acquire a new developer license. It will ask you to enter your Windows Live ID credentials to validate the request, and once you do it, you will get your new license.

Hope it helps !

Friday, May 11, 2012

A Quick Guide to the W3C

 

logo-w3c-mobile-lg

From the W3C site itself: “The World Wide Web Consortium (W3C) is an international community where Member organizations, a full-time staff, and the public work together to develop Web standards. Led by Web inventor Tim Berners-Lee and CEO Jeffrey Jaffe, W3C's mission is to lead the Web to its full potential. Contact W3C for more information.”

They are in charge of many Web Standards, including the following:

If you want to join and be part of this important community, you can actually do so ! Check out their membership page.

The Windows Store

 

win_store

The Windows 8 Marketplace tries to port the successful mobile phone application marketplace concept to the desktop. Apple does this successfully with apps for iPhone and iPad and Google does it with the Android marketplace. However, until now there hasn’t been a successful model to advertise and sell desktop software.

With Windows 8 this will be the way you will sell your Windows applications to the consumers. You will be able to sell .NET 32-bit applications and also the Metro style applications, which will be the A class residents of this marketplace.

Why does it matter? Well, no matter what you hear, the biggest operating system installation base across the world is Windows. People might go crazy for the sexy iPhone or the iPad, even for Android tablets, but the reality is that there are about 500 million installations and around 1 billion Windows users, and exposure to 231 markets, you can’t deny you are facing a potential big revenue if you get on-board.

Here’s an overview of the Windows Store, and here is a list of articles related to the store for developers that you might find useful.

Now the Windows Store is not available yet for public application submission, however, Microsoft is allowing committed developers to get on-board early so you can have your app in the Store before the Windows 8 launch.

If you want to get your app into the Windows Store now, check out this article from Matt Harrington from Microsoft. I know that Microsoft is pushing the Application Accelerator program in several countries to help developers ramp up fast into the new platform. If you are based in the UK, you might want to get in touch with the UK MSDN team. I know that Mike Taulty will be able to help you out. The team’s contact details and upcoming events can be found here.

Hope it helps, and that you get your Windows app in the Marketplace soon !

Hong Kong Jockey Club Interactive Betting Table

 

581339_431826523509642_151109168248047_1639419_1584969320_n

I’m glad to share the news that the Hong Kong Jockey Club project I worked on for Possible Worldwide, before coming to live in the UK, was published and featured today in their site.

This was an incredible complex, high-end secret project which I was part of during several months. I was the tech lead in charge of the project’s backend platform and the front-end integration, including the discovery, architecture and implementation of the backend system powering the interactive front-end touch application running on the tables.

557859_431826153509679_151109168248047_1639410_1555964970_n

543231_431825893509705_151109168248047_1639397_426778538_n

The interactive tables are probably one of the most advanced interactive multi-touch technology available to consumers. Adrenaline is the name of the installation at the HKJC, and it consists of several 10 x 4 foot multi-user tables allow up to 8 simultaneous users to follow entire race days and interactively bet on each race getting the most of the available information, updated by the backend platform, and place bets using personal RFID-enabled smart cards offering real-time transactions. This is real time high traffic entertainment e-commerce!

295222_431826463509648_151109168248047_1639417_1450792168_n      149467_431825986843029_151109168248047_1639403_970701585_n

The backend platform provides dynamic content including video, images, stats and race results, updated every 8 seconds. It also allows the remote configuration of each individual table changing interface skin and light scheme based on promotional and seasonal events. Detailed metrics are sent back to the backend system where they are processed to provide accurate and detailed information about each table usage and transactions processed.

I’m proud of the work we achieved and to see such an advanced multi-touch, multi-user application/installation go live publicly. The latest news is that it has been such a success that the Club is now working to have the multi-touch tables installed at tracks around the world, including in Singapore, Australia and Japan. Looks like the sport of kings is about to be adored by a whole new generation of enthusiasts.

Honestly, multi-touch and natural user interface powered systems are one of the most interesting technologies to work on, and trust me, with the evolution of the .NET Framework and the upcoming of the WinRT technologies, the next generation of interactive applications will be mind blowing !