Giant TCR Advanced Pro 1 First Ride Review

, - Posted by

INTRODUCTION

As someone who works in IT, other than when you’re sleeping, you can’t help but being online almost 100% of the time. Well, at least that is what I do anyway. I must say however, that there not many things I’d like to do online other than checking social media, emails, reading news and browsing bikes. One of my favourite online bike websites is Bike Exchange and I happened to stumble upon an advertisement about trialing Giant demo bikes. This immediately drew my attention just because I would never look away from testing bikes for free.

The last time I owned a Giant was in 2010 and this was when I was only few months into cycling. Therefore, I couldn’t quiet appreciate the quality of the bike. My skill was simply not there yet. It’s the same as throwing a high-end drum-kit to a rookie drummer. Surely he wouldn’t be able to tell the difference.

My very first bike was Giant OCR (alloy hybrid) that I owned for about 3 months which I then traded with Giant TCR Advanced 0. The only thing I could tell at that time was the weight – the OCR was about 10kg and the TCR was about 7.5kg. But other than that, all I’ve ever done was just flat work commuting at 21km/h. Therefore, I knew nothing about stiffness, comfort, etc.

Fast forward to 2017, now that I’ve managed to have a lot more KMs on my legs, as well as completing several Fondos including Australia’s toughest sportives: Peaks Challenge Falls Creek, Gold Coast and Cradle Mountain, I can have a lot better appreciation of bike’s qualities.

So back to the Giant’s offering, I quickly registered and chose TBE Myaree as the local bike shop that will provide me with the test bike. I did not expect much but came to my surprise, a phone call came about few days after. So long story short, I get in contact with TBE and here I am taking home the test bike for few days!

The bike I chose was Giant TCR Advanced Pro 1 which photo you can see at the end of this article. The bike came with Ultegra groupset 52-36 chainring and 11-28 cassette. Please go to Giant’s website URL below for the full spec:

https://www.giant-bicycles.com/au/tcr-advanced-pro-1

STRAVA RIDE

Below is the Strava ride URL related to this review:

https://www.strava.com/activities/905586974

THE REVIEW

So I get to take home the bike for few days which was a privilege. Thanks to TBE Myaree, the shop assistants were all very helpful and friendly. When I collected the bike all I asked for was to increase the saddle height to my measurement: 67.8mm from the centre of BB. I deliberately did not ask to change anything else such as stem angle, reach, etc just so I can do a proper first-ride review. This was Saturday.

On Sunday I took it to a short hill ride around Gooseberry. Please see above for the Strava ride log. I would also be riding with my cycling group: about 10 riders in total. Our meeting point was at BP Willeri Dr, Willetton at 6am which was about 14kms from my house. So I quickly get setup and looking forward to do my very first ride with the bike. Total weight of the bike using my bike scale (without pedals and bottle cages) was 7.1kg.

As I stepped on the bike, the very first impression I got from the geometry was my position was very upright. Even though the stem was 90mm long – which was the correct size for me, but with all the spacers they pushed it right up. I then left my house and the very first thing I encountered on the way to the main road was a short 200m 5% incline. I stood and boy, how stiff this bike was! The non-SL bikes were made with T700 carbon while the SL ones were made with T800. This bike I tested was created using T700 carbon and was already stiff. I can’t imagine how awesome the SL ones would be.

After I get through the short incline, all I had after that was all flat towards the meeting point. On flat this bike flew, too. I can certainly attest its stiffness. Every pedal stroke propels you forward. I’ve also done some sprints along the way and it was certainly stiff enough for me. Mind you though, I’m not a heavy nor powerful rider by any means. At 170cm, 69kg and about 400watts sprint, the bike certainly did not flex at all. Along the way I also tried few times to ride hands-free off the handlebar to test its stability. Oh man, this bike was a lot easier to ride hands-free compared to my AX. My AX was very twitchy; and slight wind gust will threw you off-balance.

The another thing I noticed was how comfortable this bike was. I’m currently riding a very harsh stiff lightweight bike: AX Lightness Vial Ultra and I must say the TCR is at least 30-40% more comfortable. Another harsh reality is, you can buy two TCRs complete bike for not even the price of one Vial Ultra frameset! Sigh! Is it as comfortable as Roubaix S-Works? Absolutely not. But compared to my Vial Ultra, which was supposed to be my dedicated climbing bike, the TCR would perform as a better all-rounder in my opinion. It’s as stiff but a lot more comfortable. I hate to admit it, but moving forward I would stay away from buying a very lightweight bike. It’s a lot harder to maintain, felt more fragile and most importantly, a lot less comfy.

So, long story short, I met the guys and quickly we rode to Gooseberry Hill. The distance from the meeting point was probably about another 20-30km. And along the way the road undulated. Again, the bike truly shone on flats and undulation. I was normally a mid-pack if not the bottom-of-the-pack rider but this time I managed to hang on with the strong guys which surprised a lot of people. It was a tailwind to Gooseberry so we rolled at 35-40km/h. The bike did not have any issue whatsoever. I had to lower my body position because otherwise, I would sit very right up. This caused a bit of strain on my shoulder which eventually (by the end of the ride) gave me a stinging pain. But more to this later.

We then arrived at Gooseberry Hill Rd. We did not start at the bottom but rather about 1/2 way up. It was a 1.5km at 11-20% gradient. As a guy who is used to spinning (my AX was installed with 33-50 chainring and 11-44 cassette), the 52-36 and 11/28 combination on the TCR was certainly too heavy for me. But this would be a very good test to the stiffness quality of the bike. On the 11-15% I could still spin at 60-70RPM but as it went beyond 15%, I had to stand; and even standing was difficult! Unless you’re Alberto Contador, this gear combination will not work for most of us. Anyway, the bike really shone. Standing or sitting down, the bike was truly showed its stiffness quality. The only thing that AX won over this bike was its weight. But hey, given that you have enough gearing, the 200-300gr difference won’t make a huge impact.

Now, talking about gearing, I must say that the 52-36 11/28 combination was certainly too heavy for most riders. If you live in WA, you can still get away with it because here in WA there are rarely hills longer than 2km. But if you want to take this bike to a mountain, I don’t think you’ll survive. Well not for someone at my strength anyway.

What goes up must go down. Once we reached the top, we stopped for a quick coffee then we descended down to home. On descent, the TCR was a lot more stable than my AX! Argghhh….! I felt very confident going down. Even though here in WA you would be expecting at least 30km/h crosswind at almost any time of the day, the gust did not affect the bike at all. Reaching 71km/h and I did not falter! This bike is truly a contender for the best bikes money can buy.

After 3 hours in, my neck however, was very sore. I know this would happen because my body position was very upright. But this had nothing to do with the bike but rather the bike fit. I did not wear gloves throughout the ride and I did not get numb hands. While on my AX, the stiffness and harshness get the better of my hands.

CONCLUSION

I had no complaint whatsoever with the bike. I must say this is one of the best bikes I’ve ridden. I really wouldn’t mind sourcing a TCR frameset and transfer my components over from my AX. You can’t beat the TCR for value-for-money. At $3200, you get everything you could every ask for from a bike.

I hate to say this but the TCR is certainly a better all-rounder compared to my AX. Weight-wise, I can always upgrade the components to lighter ones. The quality of the frame however, is unchangeable and the TCR is a winner in this regard.

It’s stable, comfortable, stiff. What else do you ask for?

 

Have a great day,

Tommy

IMG_20170320_171246

How to Install and Programming SOLR with Sitecore 8.2 Update 1 xDB

, - Posted by

INTRODUCTION

With Sitecore you can choose the search technology to use: Lucene or SOLR. As per Sitecore’s recommendation, SOLR is preferred. See below article for more details:

https://doc.sitecore.net/sitecore_experience_platform/81/setting_up_and_maintaining/search_and_indexing/indexing/using_solr_or_lucene

This article details on how to install and configure SOLR, creating custom index and running query to the SOLR index using C#.

INSTALLING SOLR

To install SOLR:

1. Download SOLR from https://bitnami.com/stack/solr. This article is using version 6.4.1.
2. Run the EXE
3. Specify the installation folder

1

4. Click Next then specify admin username and password

2

5. Specify the Apache web server port. I leave it at 81 unless there is another application running on this port.

3

6. Specify the SSL Port. I set it to 8143 just so it’s easy to remember as the first two digits resembles the HTTP port above.

4

7. Untick the “running solr in cloud with Bitnami”

5

8. Then let it install.

9. Once finished, you’ll be able to check if SOLR has been installed successfully in your machine by going to http://[machinename]:[selectedportabove]. In my case it is http://localhost:81. It will ask you to input your username and password.

CONFIGURING SOLR

Before we use SOLR with Sitecore we need to first configure it and create indexes. These indexes act like a “database” that will then be populated by Sitecore when we run Search Index in Sitecore. To configure SOLR:

1. Go to C:\Bitnami\solr-6.4.1-0\apache-solr\solr\configsets.
2. Make a copy of basic_configs folder and rename it to sitecore_configs.

6

3. Go to sitecore_configs > conf folder and check if you have Schema.xml file. If you don’t, make a copy of managed-schema file within the folder then rename the copy to Schema.xml.
4. Edit solrconfig.xml and add the following before the closing </config> tag down at the very bottom of the file:

<schemaFactory class="ClassicIndexSchemaFactory" />

7

5. Open Schema.xml then:

– Enclose all <field> and <dynamicField> elements in a <fields> tag.
– Enclose all <fieldType> elements in a <types> tag.

What it means is, in Schema.xml you will see a lot of these:

<field name=”id” type=”string” …… />

They are not under any parent tag. What you need to do is to enclose them with <fields> tag for all <field> and <dynamicField>. So instead of:

<field name=”id” type=”string” …… />
<field name=”_version” type=”string” …… />
<field name=”_root” type=”string” …… />
<dynamicField name=”id” type=”string” …… />
.
.
.

it will become:

<fields>
<field name=”id” type=”string” …… />
<field name=”_version” type=”string” …… />
<field name=”_root” type=”string” …… />
<dynamicField name=”id” type=”string” …… />
.
.
.
</fields>

To make it easier, I’ve made an updated Schema.xml which you can download.

Download fixed original Schema.xml. Rename to Schema.xml once you’ve downloaded.

6. Log into your Sitecore instance.
7. Navigate to Sitecore Control Panel.
8. In the Control Panel, click Generate the Solr Schema.xml file link in Index section.
9. Then put in the following:

Source file:

C:\Bitnami\solr-6.4.1-0\apache-solr\server\solr\configsets\sitecore_configs\conf\schema.xml

Destination file:

C:\Bitnami\solr-6.4.1-0\apache-solr\server\solr\configsets\sitecore_configs\conf\schemanew.xml

10. Sitecore will then create a new SchemaNew.xml file.
11. Rename your old Schema.xml to something like Schema.xml.old, then rename SchemaNew.xml to Schema.xml

12. Open the new Schema.xml then add the following inside <fieldTypes>:

<fieldType name="pint" class="solr.TrieIntField" docValues="true" precisionStep="0" positionIncrementGap="0" />

CREATING SOLR INDEXES

Next we are ready to create SOLR Indexes. To do so:

1. Copy your sitecore_configs folder to C:\Bitnami\solr-6.4.1-0\apache-solr\server\solr.
2. Rename it to sitecore_web_index.

8

3. Repeat 1 & 2 and rename to the following folders:

sitecore_web_index
sitecore_master_index
sitecore_core_index
sitecore_analytics_index
social_messages_web
social_messages_master
sitecore_marketing_asset_index_master
sitecore_marketing_asset_index_web
sitecore_testing_index
sitecore_suggested_test_index
sitecore_fxm_master_index
sitecore_fxm_web_index
sitecore_list_index
sitecore_marketingdefinitions_master
sitecore_marketingdefinitions_web

9

4. Next, go to SOLR admin page http://localhost:81/solr then click Core Admin link. You will then need to create the index for each one. SOLR will do the linking for you:

10

Repeat for each of the index folder you created previously.

sitecore_web_index
sitecore_master_index
sitecore_core_index
sitecore_analytics_index
social_messages_web
social_messages_master
sitecore_marketing_asset_index_master
sitecore_marketing_asset_index_web
sitecore_testing_index
sitecore_suggested_test_index
sitecore_fxm_master_index
sitecore_fxm_web_index
sitecore_list_index
sitecore_marketingdefinitions_master
sitecore_marketingdefinitions_web

11

CONFIGURING SITECORE TO WORK WITH SOLR

Finally, it’s time to configure Sitecore to work with SOLR. To do so:

NOTE: Easiest way is to use Windows Find inside the “App_Config” folder and just type in Lucene. It will bring you ALL Lucene related config files.

1. Disable Lucene by navigating to the website Include folder: \Website\App_Config\Include\ and disable the following Lucene configuration files by adding .disabled to the file name extension:
Sitecore.ContentSearch.Lucene.DefaultIndexConfiguration.config
Sitecore.ContentSearch.Lucene.DefaultIndexConfiguration.Xdb.config
Sitecore.ContentSearch.Lucene.Index.Analytics.config
Sitecore.ContentSearch.Lucene.Index.Core.config
Sitecore.ContentSearch.Lucene.Index.Master.config
Sitecore.ContentSearch.Lucene.Index.Web.config
Sitecore.ContentSearch.Lucene.Indexes.Sharded.Core.config
Sitecore.ContentSearch.Lucene.Indexes.Sharded.Master.config
Sitecore.ContentSearch.Lucene.Indexes.Sharded.Web.config
Sitecore.Marketing.Definitions.MarketingAssets.Repositories.Lucene.Index.Master.config
Sitecore.Marketing.Definitions.MarketingAssets.Repositories.Lucene.Index.Web.config
Sitecore.Marketing.Definitions.MarketingAssets.Repositories.Lucene.IndexConfiguration.config
Sitecore.Marketing.Lucene.Index.Master.config
Sitecore.Marketing.Lucene.Index.Web.config
Sitecore.Marketing.Lucene.IndexConfiguration.config
Sitecore.Speak.ContentSearch.Lucene.config

2. Navigate to \Website\App_Config\Include\FXM and disable the following Lucene configuration files by adding .disabled to the file name extension:
Sitecore.FXM.Lucene.DomainsSearch.DefaultIndexConfiguration.config
Sitecore.FXM.Lucene.DomainsSearch.Index.Master.config
Sitecore.FXM.Lucene.DomainsSearch.Index.Web.config

3. Navigate to \Website\App_Config\Include\ListManagement and disable the following Lucene configuration files by adding .disabled to the file name extension:
Sitecore.ListManagement.Lucene.Index.List.config
Sitecore.ListManagement.Lucene.IndexConfiguration.config

4. Navigate to \Website\App_Config\Include\Social and disable the following Lucene configuration files by adding .disabled to the file name extension:
Sitecore.Social.Lucene.Index.Analytics.Facebook.config
Sitecore.Social.Lucene.Index.Master.config
Sitecore.Social.Lucene.Index.Web.config
Sitecore.Social.Lucene.IndexConfiguration.config

5. Navigate to \Website\App_Config\Include\ContentTesting and disable the following Lucene configuration files by adding .disabled to the file name extension:
Sitecore.ContentTesting.Lucene.IndexConfiguration.config

6. Next, we need to enable SOLR Config files. Enable the Sitecore.ContentSearch.Solr.*.config files by removing .example/.disabled from the file name. Configuration file extension should be .config.
Sitecore.ContentSearch.Solr.DefaultIndexConfiguration.config
Sitecore.ContentSearch.Solr.DefaultIndexConfiguration.Xdb.config
Sitecore.ContentSearch.Solr.Index.Analytics.config
Sitecore.ContentSearch.Solr.Index.Core.config
Sitecore.ContentSearch.Solr.Index.Master.config
Sitecore.ContentSearch.Solr.Index.Web.config
Sitecore.Marketing.Definitions.MarketingAssets.Repositories.Solr.Index.Master.config
Sitecore.Marketing.Definitions.MarketingAssets.Repositories.Solr.Index.Web.config
Sitecore.Marketing.Definitions.MarketingAssets.Repositories.Solr.IndexConfiguration.config
Sitecore.Marketing.Solr.Index.Master.config
Sitecore.Marketing.Solr.Index.Web.config
Sitecore.Marketing.Solr.IndexConfiguration.config
Sitecore.Speak.ContentSearch.Solr.config

7. Navigate to \Website\App_Config\Include\FXM and enable below configuration files by removing .example/.disabled from the file name:
Sitecore.FXM.Solr.DomainsSearch.DefaultIndexConfiguration.config
Sitecore.FXM.Solr.DomainsSearch.Index.Master.config
Sitecore.FXM.Solr.DomainsSearch.Index.Web.config

8. Navigate to \Website\App_Config\Include\ListManagement and enable below configuration files by removing .example/.disabled from the file name:
Sitecore.ListManagement.Solr.Index.List.config
Sitecore.ListManagement.Solr.IndexConfiguration.config

9. Navigate to \Website\App_Config\Include\Social and and enable below configuration files by removing .example/.disabled from the file name:
Sitecore.Social.Solr.Index.Master.config
Sitecore.Social.Solr.Index.Web.config
Sitecore.Social.Solr.IndexConfiguration.config

10. Navigate to \Website\App_Config\Include\ContentTesting and and enable below configuration files by removing .example/.disabled from the file name:
Sitecore.ContentTesting.Solr.IndexConfiguration.config

11. Open Sitecore.ContentSearch.Solr.DefaultIndexConfiguration.config and ensure that the SOLR public URL can be accessed through the browser. Look for ContentSearch.Solr.ServiceBaseAddress.

 

When you visit the URL it should log you in straight away without asking you to authenticate.

12. Once that works, go to Sitecore backend > Control Panel and click on Indexing Manager to rebuild the index. It should complete successfully.

13. Once completed, go back to your SOLR Web interface and check that each index has been updated. It should display the number of documents/items indexed.

CREATING CUSTOM INDEX

To create custom Index:

1. Go to your Website/App_Config/Include folder.
2. Create a copy of Sitecore.ContentSearch.Solr.Index.Web.config and rename it to Sitecore.ContentSearch.Solr.Index.MyIndex.config
3. Open Sitecore.ContentSearch.Solr.Index.MyIndex.config and change settings as necessary. Mainly:

id=”sitecore_myindex” and

<Root>/sitecore/content/mywebsite</Root>

4. You also need to create an index in SOLR, back to:

C:\Bitnami\solr-6.4.1-0\apache-solr\server\solr\configsets\

And copy sitecore_configs folder to C:\Bitnami\solr-6.4.1-0\apache-solr\server\solr\

Then rename to sitecore_myindex (has to be the same as the “id” field above)

5. Then in SOLR user interface create core

6. In Sitecore backend rebuild index. That’s it.

C# QUERYING SITECORE INDEX

To query index using C#:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Sitecore.ContentSearch;
using Sitecore.ContentSearch.SearchTypes;

namespace MyIndex
{

public class SitecoreIndexSearchQueryController
{
private const int MAX_BODY_DESCRIPTION = 300;

/// <summary>
/// Searching Sitecore index.
/// </summary>
/// <param name=”keyword”></param>
/// <returns></returns>
public SearchEntity GetSearchResults(string keyword)
{
SearchEntity search = null;

var index = ContentSearchManager.GetIndex(“sitecore_myindex”);

using (var context = index.CreateSearchContext())
{
var results =
context.GetQueryable<SearchResultItem>()
.Where(
resultItem =>
resultItem.Name.Contains(keyword) ||
resultItem.Content.Contains(keyword));

if (results.Count() > 0)
{
search = new SearchEntity();
search.DisplayPhrase = keyword;
search.SearchPhrase = keyword;

foreach (var result in results)
{
Repositories.Entities.SearchResultEntity searchResult = new SearchResultEntity();
var item = result.GetItem();

if (item != null && item.Template != null && item.Template.InnerItem != null && item.Template.InnerItem.Paths != null && !String.IsNullOrEmpty(item.Template.InnerItem.Paths.ContentPath))
{
if (item.Template.InnerItem.Paths.ContentPath.ToLower().Contains(“/sitecore/templates/relationships australia/wa”))
{
searchResult.Title = item[“Title”];
string content = Util.FrameworkHelper.StripHTML(item[“Content”]); // get page content and strip HTML tags

if (content.Length >= MAX_BODY_DESCRIPTION)
searchResult.Blurb = content.Substring(0, MAX_BODY_DESCRIPTION); // truncate content to first 300 characters
else
searchResult.Blurb = content; // truncate content to first 300 characters

searchResult.Url = Sitecore.Links.LinkManager.GetItemUrl(item);
search.Results.Add(searchResult);
}
}
}
}
}

return search;
}
}
}

 

 

Hope this helps,

Tommy

 

How to Upgrade from Sitecore 6.6 to 8.2 xDB using Express Migration Tool v2.0

, - Posted by

INTRODUCTION

I am tasked to upgrade Sitecore  6.6.0 (rev. 130404) to Sitecore 8.2 (rev. 161221). I’ve tried to look for information on the net but there is not many available. So this article consists of the details of the upgrade process I took to make it to work. Please note that the success of the upgrade is dependant on how complex your 6.6 environment is from both content, modules and code.

This particular site I upgrade consists of the following customizations and modules:
– Web Forms for Marketers
– dtSearch for Sitecore 6
– Angular and JQuery framework in the master page, layouts and sublayouts
– 1 main site with 5 mini sites
– XSL renderings

TOOLS

Tools I use for the upgrade are:
1. Express Migration Tool v2.0 (downloaded from Sitecore)
2. dtSearch for Sitecore 6 module
3. Web Forms for Marketers 8.2 Update 1 module
4. Web Forms for Marketers 8 SQL Provider100 (used by the WFFM 6 for Save to Database action)
5. Sitecore PowerShell Extensions-4.3 for Sitecore 8 (used to fix broken WFFM with custom goals)

ENVIRONMENTS

The environments needed to perform the upgrade:
1. The PROD Sitecore 6.6 environment
2. A fresh Vanilla install of 8.2 in DEV (or other similar environment for that matter) running on either SQL 2012 or 2014.

STEPS

The steps I took to finally migrate successfully are as follows:

1. Install Sitecore 8.2 in DEV using the EXE method just because I don’t have to worry about configuring security, App Pool, etc manually.
2. After you install Sitecore 8.2, run Search Index rebuild and Link database rebuild then backup the Vanilla Websites folder as well as the databases. Just in case you need to return to Vanilla install, you can just simply copy/paste and restore these backups without having to re-install Sitecore.
3. Backup the latest PROD 6.6 Core and Master database. We want to ensure that we get only and only PROD instance!
4. Backup the latest PROD Websites folder.
5. Restore the 6.6 backup DB to your DEV SQL.
6. Restore the 6.6 backup Websites folder to your DEV SQL.
7. Run Express Migration Tool (EMT). Upon firing up you may encounter the following error message:

An attempt was made to load an assembly from a network location which would have caused the assembly to be sandboxed in previous versions of the .NET Framework.

If you encounter this issue, open Sitecore.ExpressMigration.exe.config and add the following inside <runtime> tag:

<loadFromRemoteSources enabled=”true”/>

8. Once EMT is up and running, you can specify the Source and Destination Sitecore version.
9. On the Options to Migrate, please tick ALL. You want to literally copy all items including all codes and files from your 6.6 environment to 8.2. EMT by default omits the following anyway:
– .config files
– DLLs

10. In the Instance Parameters is where you need to specify the Source and Target Websites folder, Core and Master database connection string. For example:

SOURCE
– Website folder: C:\Temp\Old6.6WebsitesFolder\Websites
– Core database connection string: Data Source=dev001;Initial Catalog=PRODSitecore_Core;Integrated Security=False;User ID=sitecoreDev;Password=sitecoreDev;
– Master database connection string: Data Source=dev001;Initial Catalog=PRODSitecore_Master;Integrated Security=False;User ID=sitecoreDev;Password=sitecoreDev;

TARGET
– Website folder: C:\inetpub\wwwroot\NewSitecore\Websites
– Core database connection string: Data Source=dev001;Initial Catalog=NEWSitecore_Core;Integrated Security=False;User ID=sitecoreDev;Password=sitecoreDev;
– Master database connection string: Data Source=dev001;Initial Catalog=NEWSitecore_Master;Integrated Security=False;User ID=sitecoreDev;Password=sitecoreDev;

Once you’ve specified the above click Next.

11. Sitecore will then go ahead and do the comparison. On the next screen you can then specify which content items and files you want to migrate. I would suggest you don’t modify anything just so it literally imports everything from the old 6.6 system. NOTE: EMT would only import “NEW” items. If you expand the items individually, they would only import items that don’t exist in your Vanilla 8.2 so you can be at peace here.

12. Click Next and let EMT does its job. Once it’s finished, it should complete successfully (well, at least it ran successfully for me for the first time as well as all the subsequent attempts). Please note that at this point your “admin” password would have been changed to whatever admin password specified in your PROD environment. If you need to restore to the original “admin” and “b”, run the following against your 8.2 Core database:

UPDATE [aspnet_Membership] SET [Password]=’qOvF8m8F2IcWMvfOBjJYHmfLABc=’, [PasswordSalt]=’OM5gu45RQuJ76itRvkSPFw==’,
[IsApproved] = ‘1’, [IsLockedOut] = ‘0’
WHERE UserId IN (SELECT UserId FROM dbo.aspnet_Users WHERE UserName = ‘sitecore\Admin’)

13. The next step is to install Web Forms for Marketers 8.2 Update 1. You can do so through the Desktop. When asked to override files you select Yes to All. When asked to override content items you select Merge. Do NOT choose Overwrite or otherwise Sitecore would destroy all your custom web forms and any content items within the System > Modules > Web Forms for Marketers node. What you want is to override the WFFM system files with the latest 8.2 version.

14. Once you’ve installed WFFM, you can now Publish the whole site. Go to Content Editor > sitecore > Publish > Publish site. It may give you errors when you try to do so. If it does, please see errors section below.

15. Now you need to copy your DLLs and the .config files (ie. web.config and all .config files inside the App_Config folder).
– For DLLs, simply copy/paste the DLLs from your 6.6 BIN to your 8.2 BIN and do NOT overwrite existing files! This way you only copy DLLs that don’t exist in 8.2 such as custom DLLs and third party’s.
– For .config files, same approach as DLL, copy new ones and do NOT override any of the 8.2 ones. Then what about if there are customisations done on the existing/out-of-the-box config files? EMT creates a folder called Migration.MigratedConfiguration in your 8.2 root Websites folder. Within it contains ALL .config files that either have not existed in your 8.2 environment or modified. In the case of the modified out-of-the-box ones, you will have to use a file comparison tool such as Beyond Compare and migrate your configuration settings manually. A classic example is MimeTypes and any pipelines modification.

16. At this point, your migrated website to 8.2 would have loaded fine in the browser.

17. Then you can go ahead and install the other custom modules.

18. Don’t forget to rebuild search Index and Link database.

ERRORS

Errors I encountered during the upgrade:

1. Fail to render .XSL file. To resolve, ensure that XslExtension.config is enabled.

2. Some of the forms built using Web Forms for Marketers are no longer working. ISaveAction is no longer available in Sitecore.Forms.Core. The namespace has been moved in WFFM 8.2 Update 1. The error was triggered by the Send Email Message and Save to Database actions. Unfortunately we have to create our own SendEmail and SaveToDatabase method! To do so, use Visual Studio and reference the latest 8.2 Sitecore.Forms.Core and Sitecore.Forms.Custom DLL.

Then in Sitecore backend > system > Modules > Web Forms for Marketers > Settings > Save Actions, modify the Send Email Message and Save to Database action to use your custom DLL and action! I’m not going to detail how to do this in this article.

3. Some WFFM forms return GUID format error. This is caused by Goals and Attributes that need to be re-registered. Go to each WFFM form inside the Sitecore backend > system > Modules > Web Forms for Marketers (and yes, these include the Sample Forms as they are also migrated from 6.6). Inside the Content tab expand the “Advanced” tab. Under goal, simply click Goals (a pop-up will appear) then hit OK to save. Then click on Attributes and do the same. Save then publish the form. You will need to do this for every WFFM Form!

Once it’s done I would suggest you publish (including sub-items) starting from system > Modules > Web Forms for Marketers node.

You can also find more details about this error on this article: https://reasoncodeexample.com/2015/03/26/sitecore-linkdatabase-unrecognized-guid-format/.

4. You get GUID format error when trying to rebuild Link databases. This is caused by exactly the same WFFM forms as per (3). You fix 3, you’ll fix 4.

CONCLUSION

I’m happy that I finally get my 8.2 site up and running as expected. I’ve repeated the steps above for more than 5 times and finally I get a success 🙂 The steps above are solid and are confirmed repeatable and working.

 

 

Hope this helps,

Tommy

The Great Cycling Challenge Ride Report – Fighting Children’s Cancer

, - Posted by

INTRODUCTION

After finishing all the 3 x Peaks Challenges (Cradle Mountain, Falls Creek, Gold Coast), I’m happy to just do my easy daily commuting. My next cycling challenge will not be until next year anyway; and that is the L’etape Du Tour by Tour de France 2017. So life goes on happily ever after until a post on my Facebook page came up about The Great Cycling Challenge (GCC). What is GCC? Basically it’s a movement to fight kid’s cancer which you and your friends/relatives/colleagues have the opportunity to raise funds for the foundation. In return, you get to choose your cycling distance you want to accomplish for the month of October.

I must admit that I love doing these cycle challenges because it keeps me waking up every morning excited. It’s like there is always a goal which you can always aim for everyday. And with GCC I thought, “All I need to do is just to do the distance. Effort-wise it can really be just a recovery/endurance pace”. So how hard could it be compared to 3 Peaks, right? Dang…how wrong was I!

Long story short, without thinking further, I decided to aim for 2,000km. Generally, I’m doing ~800-1000km/month from commuting and occasional weekend rides with the bunch. So the 2,000km would be more than double of my general monthly volume. When I first decided the distance, I did not think too far. I thought, “How hard could it be?”. Then I started marketing on my Facebook page about my intention to join the challenge as well as emailing my colleagues at work, etc.

Only after the donations started coming in did I realise that aiming for more than double of your normal riding volume is definitely not an easy thing to do. After I started writing down the numbers, I felt so overwhelmed. “How am I going to achieve this?”, I thought. To give you a perspective, I commute about 40km daily plus the occasional (once a month) 60-120km weekend ride. So to achieve 2,000km I now have to do 500km a week – which equates to 80km daily commute + 100km on the weekend for every week in the month of October. Now that the donations have been going in, there was no way I would back out the challenge.

So long story short, I in the end achieve 2,000km. It’s 31st of October which marks the last day of the challenge and I can proudly say I have achieved my goal. In this opportunity I would like to share with you my riding experience as well as few life lessons I learnt a long the way.

Please check out my Strava page for the ride log.

THE FIRST WEEK

I came into the challenge tired. That week of 1st of October I have not had a rest day (ie. days off bike) for about 2 weeks. My friends have been asking me to go out with them on a long hill ride the weekend before. So when 1st of October arrived, my body was just so tired. That weekend of 1st and 2nd of October I decided to do the challenge through indoor rides: 101km on the 1st and only 38km on the 2nd. By that Sunday my body broke down. “Oh no…this is only 2nd day and I already am almost giving up”, I thought.

One of the reasons why I do GCC (other than the excitement of the challenge) is to get a very little glimpse of what these children have to go through day-in-day-out. Can you imagine how tiring it would be for these children to have to go through chemo and all the pain everyday and yet they never give up? So with their spirit, I push on.

Came Monday I did my first 60km commute. I wanted to do 80km but I was just too tired. I wish I could tell you how I felt. My body just didn’t respond. Even though I was riding on Zone 1 (Recovery), but because my body was already fatigued, the ride took its toll. Then I realised that doubling up your cycling volume is not as easy as it sounds. In fact, I read on the net that you should only increase your volume by 10% max weekly. Otherwise, your body will not be able to cope and your body will start breaking down. So I arrived at home at 7pm – which I would have arrived by 6pm normally; and all I could do was eat, shower then sleep. I went to bed at about 830pm that night.

Tuesday came. My alarm rang at 630am. This day I made a commitment to attempt 80km commute because otherwise, I may not hit my 2,000km goal by the end of the month. My body somehow has not recovered well from last night. Even though I slept for more than 9 hours, more fatigue set in. I achieved my 80km commute but I just felt sooooo bad that day. I had runny nose, eyes were blinkering. I felt so down mentally. I was only 4 days in and yet my body could no longer cope.

That first week was definitely the hardest because my body was just not getting used to the new riding volume. I only did 343.7km that week instead of the planned 500km. I must admit I felt discouraged that week because if this was how it’s going to be for the upcoming weeks, I definitely would not achieve my 2,000km goal.

But looking back, it’s only a matter of time before your body get stronger and you can start coping with the challenge! So the lesson for the first week is, don’t give up too soon. There is first time for everything and you need to allow room for failure in the beginning.

TAKING IT DAY BY DAY

In Tour de France, the GC riders always speak of this cliche: “Taking it day-by-day”. But I cannot agree more that this was the best way to tackle the GCC challenge. Often in life we try to get way too ahead of ourselves. I work as an IT Consultant; and often I hear how my client is preparing a 5-10 year plan for their IT infrastructure, etc. In reality, 100% of the time whatever they have planned will totally change in 5-10 years time. I have worked for a client who bought the best computers so it lasted for 10 years. After few months time the IT manager was changed and all the plans and strategies were scrapped. Who would expect, eh?

Through this challenge I realise that it doesn’t do anybody any good if you’re trying to be too ahead of yourself in time. Why? Because the things you were planning may either not go as planned or not happen at all anyway. Every time I achieved my 80km daily commute, I said, “Thank God”. I was learning to be grateful every single day. Let tomorrow’s difficulty be tomorrow’s. When I started planning too far, then you had birthday invitations, or dinner invitations and other things that would disturb your day and your sleep!

As Kungfu Panda said, “Yesterday is history, tomorrow is mistery…but today is the day”.

RIDE HARD, REST HARDER

Throughout the month of October the first time in my life did I sleep at 830pm and woke up at 530am everyday. If I slept slightly later – let’s say 9 or 930pm, I would feel a little more fatigued the next day. As funny as it sounds, it truly happened. And these little accumulations of fatigue would cost you dearly in few days time. The rest included more than just sleep. It’s the food you eat, your stress level, etc.

Make sure that when you rest, you rest!

COMPUTER TIME AND SOCIAL MEDIA WOULD KILL YOU

Throughout this challenge I realised that any time you spend on your laptop, phone and social media is an added stress! After work I usually check my emails, going onto Facebook, checking online cycling shops, etc. But for the month of October I learned the hard way. The first week I would do the same after work: checking emails and FB while having my dinner. Then after shower I would check my phone again and bit more time on FB, reading news, etc. But when I woke up in the morning I felt more tired.

Starting from 2nd week I learnt to put my laptop and mobile phone away (after work at least). As I arrived at home at 7pm daily, I would eat my dinner until 730pm, then I took a nice long hot shower until 8pm, uploaded my ride to Strava (yes, still laptop time but that’s about it) then by 830pm I would hit the bed. You know what, the next day I felt more fresh than ever! I now realise that the less time you spend on laptop and social media, the more time your body can recover.

So I took this approach for my 3rd and 4th week and before I knew it, I was at the end of the challenge hitting my 2,000km goal!

Be reasonable with the amount of time you spend on social media. Learn to listen to your body. After all you will be the one paying the cost anyway. It truly doesn’t feel nice at all when your body is fatigued. At work you will be yawning every few minutes and you can’t concentrate. There was this particular day during the first week that I just was not productive at all. 8 hours I spent at work and I did nothing. It took me a long time to do a simple programming task.

THE RIGHT DIET

There was no place for bad diet. In fact, through this challenge, I realise that your body can’t function well with a bad diet. During the month of October I tried to avoid fatty food. I would not eat anything that is greasy and oily. Lean meats, carbs and vegetables were the favourites.

If you want to feel alive, change your diet to a healthy diet. People say that we lose weight because of the exercise. No, first and foremost it’s our diet that needs to change. We are what we eat.

LIFE IS ABOUT ENDURANCE

Life is an endurance sport. Full stop. It’s not about being good at the beginning then fading in the end. It’s about being good at all times! It’s the attitude of never giving up. It’s about being strong and keep fighting until you hit the finish line.

Sometimes life would hit you in your face, a set back happens. But it’s about bouncing back stronger than ever. You may get knocked down but you get up again.

CONCLUSION

Finally, I just want to say that through this challenge, I’m a changed man. The spirit of the children strengthen me. Together we can beat cancer. And for the children who are currently going through it I just want to say that all of you are super heroes! I truly don’t know how you can go through it day in and day out. All I did was commuting 80km daily in recovery pace and yet I’ve already complained so much of how hard it was. But you, you wake up everyday fighting. You are amazing!

You are not alone and together we can beat cancer!

Tommy

IMG_1667

 

absoluteBlack Premium Oval Chainring Review: The Missing 10 Watts

, - Posted by

INTRODUCTION

One day I stumbled upon absoluteBlack brand on my Facebook feed. I was immediately drawn into their product as their oval chainring looks like no other. First of all, the design pattern on the chainring is eye-catching and secondly, there is no brand name printed on it.

Visiting their product information page on their website, it mentioned how the chainring has been specifically optimised for general riders’ way of spinning. While Rotor has different “ovality” settings (3, 4 and 5), the absoluteBlack only has one. The exact number is 11.4% “ovality”.

Long story short, I was immediately interested and pulled the trigger. I purchased the 34 and 50 red-colored chainrings.

I have also ridden Rotor QXL 34-50. In fact, the chainring is still attached on my Guerciotti Eureka SHM50. So in this opportunity I would like to share with you the review on the absoluteBlack as well as comparison with the Rotor.

INSTALLATION

I would be putting the chainring on my AX Lightness Ultra bike. The current ones I had on there were the round Fiber Lyte’s 33-48 which I used to conquer Peaks Challenge Gold Coast. Before I continued further, let me tell you that I didn’t end-up replacing the 33 with the 34 because of the Power2Max power meter that needed to be taken off which I could not be bothered with. So in this instance, only the 50 will be installed.

Installing absoluteBlack was quiet simple. I did not need to take any of the cranks off. First of all I had to adjust the front derailleur to accommodate a larger chainring. So I undo the cable and lifted the derailleur a little bit. I then took off the 48 and replaced with the 50.

After that all I needed to do was to adjust the height of the derailleur, re-tighten the cable and I was done. As I tested spinning the bike on the stand, I did not find any miss-shifts whatsoever. It worked  seamlessly with the 33 Fiber Lyte’s round chainring. Switching from large to small chainring did not cause any miss-shifts or dropped chain whatsoever. I did not need to replace my chain either.

When I switched to the 50 and spin the bike (still on the stand), I could feel the different “chop”. On the round 48, the spin was smooth but on the absoluteBlack, near the bottom, the spin was kind of “jumping”. When I installed the Rotor QXL it certainly didn’t jump this extreme. Mind you, I was using setting 3 on the Rotor. I have tried setting 4 and 5 before and ended up giving me leg pain.

ON THE ROAD

So how does the absoluteBlack perform on the road? In a simple term: AMAZING! First of all let me start with the scientific results.

Performance

I must say that they have done their research and their marketing claim ain’t gimmicks! They said that they have optimised the chainring for general riders’ way of spinning and I have to say they’re spot on. Their argument was, for pros – as they have perfected their spins due to the volume of riding they do everyday – oval chainrings may not bring any benefits. But for amateur riders like most of us, it will certainly bring benefit. I agree with all of these!

Using the round chainring, my Left-Right balance (based on Garmin) was always 49% left-51% right. Power was always around 145w-155w. Now on absoluteBlack, the balance is 50% left-50% right and power has now increased in upper 150w-165w. It means that I have found my missing 10watts! The absoluteBlack has somehow helped my left leg spins more efficiently.

Below are some of the Garmin Connect rides. You can also check out my Garmin Connect profile for more ride entries.

On the round Fiber Lyte (ie. all rides prior to Tuesday 30th of August 2016):
https://connect.garmin.com/modern/activity/1326550922
https://connect.garmin.com/modern/activity/1320177213

On the absoluteBlack (ie. all rides after Tuesday 30th of August 2016):
https://connect.garmin.com/modern/activity/1328002425
https://connect.garmin.com/modern/activity/1348145194
https://connect.garmin.com/modern/activity/1346140351

Speed obviously increases by at least 0.5km/h!

You don’t have to believe what I say nor what absoluteBlack say, but my numbers don’t lie.

Power-wise, the Rotor QXL on the Guerc somehow gave me a higher number. Mind you though, I’m using a different power meter on that bike: Rotor inPower. It’s either the inPower reads 10-20watts higher or the Power2Max that reads 10-20watts lower.

Average speed on the absoluteBlack however is faster! If you look at my Strava profile, all my commute entries after the absoluteBlack are indeed the fastest.

Ride Feel

When I first rode it on the road, as I experienced during spinning it on the work stand, that unique chop feel was immediately felt. It happened near the bottom of the stroke. Adjusting to it however did not take long. It only took me that first 5 minutes of my ride to adjust. After that my legs could adapt properly with the ovalisation.

I must say that my left leg definitely felt stronger. I could push more with my left leg hence why it may explain the increased efficiency and power. While I was riding the absoluteBlack, somehow I wanted to push bigger-gear-slower-cadence all the time. During my first day of riding, my cadence was around 85-90RPM. But as I entered day 3, I could spin higher cadence at 90-100RPM.

Climbing was where absoluteBlack (and oval chainring in general – for that matter) shined. I like to stand more than seated when climbing, and that “jump” near the bottom of the stroke made a perfect place of “rest”. Further to this, as you’re tempted to push for bigger gears, seated climbing also felt great. You need to try it otherwise you may not understand what I’m talking about.

Compared to the Rotor, the absoluteBlack felt more optimised. On the Rotor I’m using setting 3 and the oval feel was not that emphasized. In fact, it felt quiet like a round chainring. As I mentioned previously, changing the setting to 4 or 5 (hoping for more “ovalised” feel) gave me leg pain. This is not the case with the absoluteBlack though. There is no leg pain whatsoever. So to re-iterate, I truly buy into absoluteBlack’s marketing spill that claim how the “ovalisation” has been optimised for general/amateur riders like me.

CONCLUSION

In conclusion, absoluteBlack’s claim on its chainring performance ain’t gimmick. I’m a living witness that I indeed improve my riding performance. I’m not paid to write this article. I wrote it because of how much I love my absoluteBlack chainring. I strongly suggest you give it a try. You won’t be disappointed.

As far as Rotor vs absoluteBlack is concerned, I will definitely still lean on the absoluteBlack due to looks as well as a more optimised “ovalised” feel and performance.

ab

 

Have a great day,

Tommy

Our Services

We provides you the best Services in our themes.

  • Click on the link below to see a full list of clients which we have developed solutions and provided consultancy for.

    READ MORE

  • We are solution-centered and not application-centered.

    READ MORE

  • Being creative and having fun and yet still delivering a fantastic service is the center of our values.

    READ MORE

  • TFS Consulting Services guarantees delivery that is within budget and deadline or you engage us for free.

    READ MORE

Implementing IT does not have to be difficult.

As long as you have the right methodologies

We have heard a lot of complaints from our clients that IT a lot of the times give them headache. The issues range from over-budget implementation, server is too hard to maintain, application is not user friendly, features not complete and many others. If you have ever experienced similar situations, don’t worry. This is why TFS Consulting Services is here. We exist to help clients implementing a successful IT solution. We have various methodologies which we have proven working in delivering a successful IT implementation. Below is the list of some of our key service offerings:
  • Planning and Methodologies

    Implementing IT solution does not have to be difficult. TFS Consulting Services has a lot of resources on planning and methodologies that will ensure successful delivery of your IT solution. TFS Consulting Services has been around in the web industry for more than 10 years and has experienced all the successes and failures of various type of IT deployment.

    read more

  • Technical Resource

    Do you need a technical resource? TFS Consulting Services can also provide you with technical resource for developing ASP.NET (C# and VB.NET), SharePoint (2003, 2007, 2010, 2013) and MS CRM applications. Our resource is an Microsoft Certified Personnel (MVP) and Microsoft Certified Technology Specialist (MCTS) in all ASP.NET, SharePoint and CRM.

    read more

  • IT Consulting & Advice

    Make sure your IT implementation is robust and scalable. TFS Consulting Services can provide consulting and advice on industry’s best practice on various web-related areas such as website security, design and usability, application-specific (such as SharePoint)’s best practice, Search Engine Optimisation (SEO), coding standards and many others.

    read more

  • Solution Development

    Finally TFS Consulting Services provides you with solution development service. We mainly work with Microsoft technologies (ie. .NET and SQL Server), however we are also capable of developing with PHP and MySQL. If you ever need any business process automation, integration and solution development work,  we are the trusted expert you should go to.

    read more

For more detailed service offerings please visit our Solutions page.

Testimonials

  • I’m happy to recommend Tommy as a knowledgeable and diligent developer.

    Mike Stringfellow, Vivid Group
  • Tommy has a lot of great ideas that can be delivered into great products. It’s a pleasure working with him because he has a broad knowledge about available technologies out there and he knows what’s best for the client’s needs. He just knows how to work effectively and efficiently.

    Teddy Segoro, Student Edge
  • I’ve worked with Tommy over the past 6 months and have found his approach to development (especially SharePoint) absolutely outstanding. Tommy goes beyond the boundries of typical software development with his ability understand what a client requires and then build it into fully fledged software solution. Coupled with his professional “Best Practice” approach, you get Continue Reading

    Michael Bonham, DSC-IT

Contact us

Tommy Segoro
tommy@tfsconsulting.com.au
+61 404 457 754

   

© TFS Consulting Services 2024. All rights reserved.

www.incorporator.com.au