So we built a product on a whim and made a good job of it. But S4S is turning out to be really powerful – and companies across the world are coming up with brilliant ways to use it. I guess I should not be so surprised; we all carry 8Gb flash drives in our pockets. But how about this:
1. The Salesforce Lead form is given an extra dropdown field called “Profile”.
2. From Salesforce, the lead is sent an email with the login credentials to the Sitecore CMS site
3. After logging into the site, the content is completely personalised according to the selection made in Salesforce Lead Profile field.
Now how good is that!
FuseIT have just launched a connector that lets Sitecore talk to Salesforce and vice versa.
Called S4S, the connector allows the transparent bi-directional transfer of Sitecore CMS objects with Salesforce assets. The S4S connector achieves integration at four key levels – security, data, OMS and Salesforce report and dashboard connections. Inherent in the connector are features to make displaying content easier like the paging of list data from Salesforce.
Sitecore have recently built into their CMS a serious analytic’s module called OMS (Online Marketing Suite). FuseIT are busy adding features to S4S so all the OMS information can be exposed in the Salesforce Reports and Dashboard pages. See more about all this at FuseIT.com
If your CalendarExtender is half hidden by divs you should be able to fix it by one or both of these solutions:
In the css, give it a high z-index:
.ajax__calendar_container
{
z-index:1000
}
Make the div position absolute:
<div style="position:absolute;height:auto">
<div id="requiredBlockCompletedDate" runat="server" />
<asp:TextBox ID="txtCompletedDate" runat="server" CausesValidation="True" MaxLength="10" Text='blah'></asp:TextBox>
<asp:ImageButton ID="imgCompletedDate" runat="server" OnClientClick="javascript:return false;" SkinID="CalendarImageButton" />
<ajaxToolkit:CalendarExtender ID="CalendarExtender3" runat="server" CssClass="ajaxToolkit-CalendarExtender" Format="dd/MM/yyyy" PopupButtonID="imgCompletedDate" TargetControlID="txtCompletedDate">
</ajaxToolkit:CalendarExtender>
</div>
Life in the clouds is no picnic … especially when you deploy for the first time and discover all is not well in the medium trust environment.
It would be wishful thinking to add <trust level=”Low” /> to the Web.config ..
Anyway, here are a few discoveries I have made ..
In Web.config make the following changes
1. Add requirePermission=”false” so components can be accessed
<configuration>
<configSections>
<!– Added requirePermission for cloud access –>
<section name=”log4net” type=”log4net.Config.Log4NetConfigurationSectionHandler, log4net” requirePermission=”false”/>
<section name=”dataConfiguration” type=”Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings,
Microsoft.Practices.EnterpriseLibrary.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″ requirePermission=”false”/>
.
.
</configSections>
</configuration>
2. Impersonate a valid user
<system.web>
<!– To allow files and folder access –>
<identity impersonate=”true” userName=”dfw\blah” password=”passwordBlah” />
.
.
</system.web>
3. Issues with the GAC – still working on this
<!– Yep … its debug mode … issues with the AJAX ToolKit –>
<compilation debug=”true” strict=”false”>
.
.
</compilation>
You may also get trouble with third party dll’s that do not run in the medium trust environment. It took me a few hours to rewrite a blowfish encryption dll that did just that.
I will add stuff to this note as I discover them.
We have all heard about outsourcing to India and how the Indian way is very different to our own.
We outsourced a large chunk of our new web application to a company in India and the outcome was positive. However when choosing a company you will need to do due diligence on who they are and what work they have previously completed. Here are a couple of points.
- Try to visit the Indian company to get a feel for their size and shape.
- Ensure the company has real experience in the type of application you are building – actually contact previous customers.
- Check and test the company uses current technologies – have they used AJAX before, do they create tiers, where do they place their business logic etc. You need to get down to this level!
- Don’t be tempted to pick a company by price – good companies can be really cheap.
- Verify their process – For web apps, build the HTML GUI first. Its amazing how many functionality issues arise from developing the GUI. After signing off the GUI, move on to the database design and finally, join the two.
- Consider exchanging staff for short durations.
On a daily basis here are a few hints
- Agree on clear and achievable milestones.
- Keep in constant communication to ensure their understanding of a requirement is your understanding (there is a good chance it won’t be!) .
- Keep in communication to ensure their progress is ongoing. If not, help them resolve technical issues.
All in all, we really enjoyed the experience and cost savings of working with an Indian company.
It must be the worst operating system on the planet! Why? Because no hosting service in New Zealand wants to admit using it!
Actually I have found one brave host who mentions it – instaweb. But I am an optimist who is going to get zillions of hits on my site and I want/expect/demand a raft of choices.
Yeah, I know I could go virtual or dedicated but I want others to do all the admin work – I’m just a dev! And no, I am not thinking of running the .NET 3.5 framework with Server 2003!
In postphoria TechEd I am not the same person. It has damaged me beyond repair. To prove it, yesterday, for some reason, I resigned from two amazingly good jobs.
My timing must be admired though .. the world in financial crisis, one kid entering university, one studying at university and one about to leave university, the car still not paid for and I say no to security and warm fuzzies.
Maybe I just fell over the edge!
These phrases popped up during TechEd so I scrambled to verify it was what I thought it was .. and it wasn’t.
To recognise DI, look for an interface being passed into a class constructor or, alternatively, an interface being passed to a class properties set. The primary objective here is to provide loose coupling by using interfaces. We can use a referenced object in our class only knowing that it has an interface.
The New Zealand TechEd was awesome and I need to go again … next week would be nice.
The best memories I have were the sessions from the evangelists Rob Bagby and Scott Hanselman. Here is what kicked me the hardest at TechEd.
1. TDD – Everybody is using a mocking framework. If you don’t have this on your CV you will look like a dinosaur. There were no specific seminars on mocking because it was an “assumed known”. Read this if you are desperately out of touch and need urgent help.
2. REST – This is a WCF like service but REST does NOT use SOAP so it seriously reduces the request and response traffic to and from the hosting server. It also simplifies web service calls by putting much of the the request detail into the url. The best description of REST I have seen is here. See here for the TechEd examples by Rob Bagby (dude!) or here for more generic examples.
3. ASP.MVC – Overview is here. At TechEd, the inbuilt facility to route the url differently from the folder structure seemed overplayed.I do not like this framework even though Scott Gu and his guys do – too much code for the advantages you get – which seems to be just adding the testing capability form the web page down to the database. I would rather mock and have a simpler framework.
4. Fiddler – A nice tool to look at your web requests and responses – but if you use Firefox (i.e you are a developer) you will need to adjust your browser.
5. C# Utilities – Have a look at the New Zealand created C# utilities by James Newton-King. They are zipped up into a project and look to be the right stuff.
If you were at TechEd and are an aspiring evangelist, and loved the tool that does all those fancy zooms, arrows, lines and rectangles, better have a look at Zoomit .
I once worked in a corporate environment where three letter abbreviations were used as a mechanism to confuse management. The EDP (Electronic Data Processing) department went on and on about IPLing. Whatever it was, an IPL seemed to fix everything – these guys were obviously genuises. I desparately needed to know so I could do it too! Disappointed I was when I found it to be Initial Program Load (or a common reboot in PC talk).
ETL is something everyone seems to know about, do in their spare time and think nothing of it. So Extract, Transform, and Load is all about updating your local database with data collected from somewhere else. How come it has taken me 30 years in the game to know this? – and what else don’t I know?
To make matters worse, 30 years later the TLA has extended to the FLA (or 4LA if you want to really impress) and beyond ..
BTW – I have had it pointed out that candid confessions of ignorance like this can be career limiting. I am not bothered by this, but if you are, please continue to nod knowingly when someone throws the next TLA at you.