Quartzon Pool Stain Removal

I’ve noticed any leaves left for a few days on the Quartzon surface produce a rusty stain. Scrubbing this surface doesnt remove it. Ive noticed when apply some chlorine directly to the effected spot the stain disappears within the hour.
Leaf Stain

The grass is greener on the other side

This summer I wanted to re-turf my front lawn (dirt patch). So during spring I asked one of my friends how he went about it. I bought a concentrate weed killer and sprayed my lawn with it.

The plan was to get some new top soil in before laying the new lawn. I had some unexpected expenses come up so the project had to be shelved. The yellow patchy lawn out front looked terrible. Meanwhile my neighbour went ahead with re-turfing his lawn. The guys re-turfing had a cancelled order and my neighbour was kind enough  to give me what was left. It wasnt enough to do the front so i decided it would go to the back.

I dug up a section of the lawn and laid the new turf. The mistake I made was not digging up the entire space, levelling it out nicely before laying the turf. So I left it for the evening and wouldn’t lay any more until i dig the entire space up.

Heres what the first few rolls looked like :

Returfing - first attempt

Every skill is a weapon in life

Studying my Graduate Certificate in Systems Development (towards a Masters of Systems Development) towards the end of 2012 got me reflecting on my studies. I was disappointed with myself for not having studied in previous years and decided I will push a little more when it comes to formal education. The masters degree would end up costing approx $20K to complete.

However, Im still paying for my degree so I didn’t want to accumulate more debt. Assuming I was willing to spend the $20K and complete a Masters degree, of what benefit or impact will it really have on my work, my interactions, and my pay. I really couldn’t see any impact or benefit. So this led me to think about picking up an additional skill that would complement my current technology skills. So I went along to the postgraduate information night at UTS. The 2 i focused on were the Masters of Telecom Engineering and Masters of Biomedical Engineering.

They seemed interesting. I love the contribution of technology to peoples lives. Its one of the reasons I got into software. But should i really spend $20K on a masters degree i might not use? Plus anything could happen in the 2 years required to complete it. I concluded this would be too much risk.

The alternative would be to complete something in TAFE (much, much cheaper). So I looked at part-time Electronics classes but they seemed to go on forever. I looked at Spatial Information Systems (GIS), and made up my mind. But then, how cool is 3D printing or new advancements in aquaponics farming, welding would be fun – imagine the (sh*t) I could make at home. This led me to start exploring more options, why shouldn’t I experience more in life? Why couldn’t I keep studying till the day I die? The great thing with software development is that you can apply it to any field, so its a skill that could come along for the ride.

I eventually made my choice on study, but unfortunately this required taking some time off work. Financially, I really couldn’t afford this. I consulted most of my close friends and family with mixed opinions. In the end I thought I would put it forward to my manager, if he allowed me the time to study then i would do it, if not then I wouldn’t. (Leaving it in gods hands so to speak). I was allowed to take the time off; that decision was going to change my life.

So it begins…

 

How to create a gallery or product category page in Umbraco

I needed to create a gallery for an Umbraco site I was playing with. Obviously something like this would have been created before so why reinvent the wheel. Off to google I go.

I found a few but nothing really suited. So I created one (it was hot outside).

Umbraco Product Categories

Umbraco Gallery

Product Categories with underlying Products displayed

Heres what i created for this task… I’ll come back and explain this though just copy the below script into a Razor file and add as macro script. Reference this new control in your template.

Create 2 DocumentTypes, a ProductCategory and a Products type. For the ProductCategory document type set its “Allowed Child Nodes type” to the Products page.

Now each Document Type has a corresponding template. Each template had an inserted macro which references Razor scripts. I used a razor script for the ProductCategory and another for displaying the Product. Below is the script for displaying the categories.

@using umbraco.MacroEngines;
@using umbraco.MacroEngines.Library;
@using umbraco.cms.businesslogic.media;

@inherits umbraco.MacroEngines.DynamicNodeContext

@{
//Get the current DynamicNode
DynamicNode d;
if (PageData.Count > 0){
d = new DynamicNode(PageData[0]);
}
else{
d = new DynamicNode(Model.Id);
}

// <div style="text-align:right;float:left;"><h1>@Model.Name</h1></div>

<div>
<div>
<h1>@Model.Name</h1>

</div><!-- / .page-title -->
</div><!-- / .page-title-wrapper -->

<div></div>

dynamic eventFolder = Library.NodeById(1224);
<br/>

<div>
<div>
<div>

<ul>

@foreach (var node in eventFolder.Children)
{
<li>

<div>
<div>
<a > <!--href="@node.NiceUrl.Replace(" ", "%20")" -->
<div style="height:220px;width:320px;background-color:white;text-align:center">

@{
var media = new umbraco.cms.businesslogic.media.Media(Convert.ToInt32(@node.Image));
string imageUrl = media.getProperty("umbracoFile").Value.ToString();
}
<img src="@imageUrl" alt="@node.Title" max-height="220px"/>
<span></span>

</div>
</a>
<!-- <span></span> -->
</div>
<div>
<!--<h4><a href="@node.NiceUrl.Replace(" ", "%20")">@node.Title</a></h4>-->
<h4> <a>@node.Title</a></h4> <!-- href="#" -->
<p>@node.Description</p>

@foreach (var product in node.Children)
{
<div>

<a href="@umbraco.library.NiceUrl(product.Id).Replace(" ", "%20")">@product.Title</a>
</div>
}

</div>
</div>

</li>
}

</ul>

</div>
</div>
</div>

}

Someone cried out “Iceberg”

You’re waist deep in a pile of code sinking fast. So you have been working on a large project for a while. Things aren’t going so smoothly with the project already having missed a few milestones. Then the team leader jumps ship, adamant hes done well whilst lowering himself into the first lifeboat. Some of these might be occurring http://salmograby.net/project-management-do-nots/  . What do you do now?

If the project size or work remaining allows for heroics, then go for glory. I have always been of the belief that its more noble to fight till the end and go down with the ship (if it has to go down). But in recent years my attitude has changed. Now I shoot for maximum profit or minimum loss, generally this is how projects are managed. But there’s usually a point of  no return with projects. When you’ve done too much work to scrap but not enough work to be complete. Once you get to this point, then in my opinion, the solution is to ready the existing work for client deployment and hold off on any work until a stable version is in use. This shows the client some of their return on investment and will consequently ease some pressure.

 

 

The database file has been created by an earlier version of SQL Server Compact. Please upgrade using SqlCeEngine.Upgrade() method.

There are 2 ways to overcome this, Ill explain both.

  1. Open up SQL Management Studio and connect to your SQL Compact Database, on connecting you’ll receive a similar warning though SQL Management studio will automatically perform the upgrade for you.
  2. Before you initialise your connection ie.

SqlCeConnection

 
connection = newSqlCeConnection(@"Data Source=c:\\dev\\Database.sdf;Password=password");

And then

 
string connectionString1 = @"Data Source=c:\\dev\\Database.sdf;Password=password";

string connectionString2 = @"Data Source=c:\\dev\\Database.sdf;Password=password";

SqlCeEngine engine = newSqlCeEngine(connectionString1);

engine.Upgrade(connectionString2);

You’ll only need to run it once then can remove the code.

This can also be fixed by running the upgrade from the link provided in my previous post. Thats the recommended solution.

 

This is not a valid SQL Server Compact Database file or this file version is not supported by current SQL Server Compact Engine.

Having run the SqlCe Upgrade method I started receiving this error. I cant open the SqlCe database file in either SQL Managemernt Studio Or through Visual Studios Data Connections tool.

I currently dont have Visual Studio 2010 service pack 1….So i installed it and it made no difference.

I then installed this (Visual Studio 2010 SP1 Tools for SQL Server Compact 4.0) http://go.microsoft.com/fwlink/?LinkId=212219

This got things working for me.

Quartzon Pool Renovation of Concrete Marblesheen Pool

Ive got a concrete pool that was previously painted with an epoxy paint thats begun to die and peel.
As it dies it releases a white powder into the water. So for this summer (2012) I decided Ill renovate the pool and paint it myself. I didnt want to cut any corners so I thought I would get it sandblasted first. For $1000 the blaster did his job, though what remained was calcium build up on the marblesheen, cracks, and underlying concrete exposed. The cracks now needed filling and the pockets of exposed concrete amongst marblesheen had to be patched. I brought the pool guy in to acid wash it.

I then spent a fortnight thinking about what step I should take next. There were enough issues with the marblesheen to warrant a complete re-rendering of the pool; but what type of rendering should this be? In the end I decided on Quartzon, because it was fine textured and would not require painting.

I wanted to know what kind of issues Id have with it; I asked the pool guy if he’d serviced any Quartzon pools, yep..some calcium build up he says. The free “Cal-Stop” solution provided with the purchase of Quartzon had already confirmed that to me.

I’ve read of people having stains forming which are proving difficult to remove. They dont say how long they expect it to last, but rather say, “it will last many years”.
I dont expect anything to last forever, but I expect to be able to easily repair something. So i thought, if something goes wrong with it I can have someone come in and render over the problematic patch.

I called Quartzon and asked if I can paint over the surface one day? My thinking was to purchase the White or lightest colour and then paint it if it ever stains badly. But apparently you cant paint over it. Few people have documented their experiences with Quartzon, and for the amount of money it costs I thought I’d keep a live journal about it.

So i brought in the contractors and they got to work rendering with “Pacific Star”. I headed to Hayman Island the same weekend (coincidentally); and splashed around in the Quartzon rendered heated fresh water pool there (its the one in the center). I inspected it for stains, and scratches etc…. This pool would be getting used quite a bit and everything seemed ok; though I did see snorklers holding toothbrushes (exaggerating) scrubbing the saltwater pool. Im definitely not going to do anything like that.

The process of getting my pool quartzoned was:

  1. Sand Blasting (but you might not need it)
  2. Acid Washing
  3. Quartzon gets added at 10mm thickness, so 300mm below my water tile line had to be grinded away so it when rendered it would sit flush with the tile line.
  4. V-Cuts made into all cracks and then waterproofing coat added
  5. Rendered with Quartzon (approx 70 bags, ive got 4 spare)
  6. Allowed to dry overnight then acid washed the next morning and water fillup began
  7. Took around 3 days and nights to fillup, pool guy started the chemical treatment, used the Cal-Stop (which is apparently required every 6 months at a cost of $65)

Here you can see the water proofing

Water Proofing

Quartzon render applied

Quartzon Rendered - Pacific Star

As the Quartzon dried it went white-ish

Quartzon Curing - Pacific Star

After acid wash and fillup notice the colour. I purchased “Pacific Star”, so expecting a darker, bright blue colour…Im hoping the colour will get darker (Ill post images if it does or doesnt)
Filling Up - Pacific Star

Consumed WCF service returning objects of custom types, and not the same type shared in the referenced domain assemblies

So you’ve got a WCF service and its client. Both use the same assembly containing the common objects that you pass I between. You make a change to your service and attempt to update your client and suddenly it no longer recognises these objects as the same. It builds its own object and you find yourself in a position having to map or cast types (the very thing you’re attempting to avoid by sharing common types).

Things to check:
• Ensure you’ve referenced the correct assembles
• Ensure your objects have appropriate DataContract and DataMember attributes (if using service bus you’ll most likely also have the Serializable attribute set as well)
• Check config or right click and “Configure Service”, ensuring you’re pointing to the right location.
• GOTCHA: ensure referenced assemblies are the same version

Typing this on the train, and on mobile, excuse the typos

Creating a Pie chart in ASP.NET MVC Razor

Creating a Pie chart is fairly easy using the ASP.NET charting control. The difference between the Forms vs MVC implementation is that for MVC you’ll have to create the chart image file and bind to it. The method below produces an image containing a pie chart with labels outside the chart area. To add a Title simply add the line:

 
chart.Titles.Add("Customer Shares"); 

You’ll notice the chart has some white spacing around it; if you’d like to tweak it further then you can play with it using

 
area.InPlottedElementPosition.Height = ....;
area.InPlottedElementPosition.Width = ....;

or through the following

 
area.InPlottedElementPosition = new ElementPosition(0,0,100,100);

Im blogging this while on the train via my phone so just check properties using intellisense.

 

public void CreateChart(Dictionary networkShares) 

        {   

            var chart = new Chart();   
            var area = new ChartArea();

            // configure chart area (dimensions, etc) here.   
            chart.ChartAreas.Add(area);
            chart.ChartAreas[0].Area3DStyle.Enable3D = true;

            // create and customize data series.   
            var series = new Series();

            foreach (var item in networkShares)
            {
                series.Points.AddXY(item.Key, item.Value);
            }

            series.Label = "#AXISLABEL #PERCENT{P0}";   
            series.Font = new Font("Segoe UI", 8.0f, FontStyle.Bold);   

            series.ChartType = SeriesChartType.Pie;   
            series["PieLabelStyle"] = "Outside";   

            chart.Series.Add(series);    
            var returnStream = new MemoryStream();   

            chart.ImageType = ChartImageType.Png;   
            chart.SaveImage(returnStream);   
            returnStream.Position = 0;

            Image imgChart = Image.FromStream(returnStream);
            //Chart_Folder is just a constant holding path
            string chartPath =  HttpContext.Current.Server.MapPath(CHART_FOLDER);
 
            if (!Directory.Exists(chartPath))
            {
                Directory.CreateDirectory(chartPath);
            }

            string chartFilePath = Path.Combine(chartPath, CHART_FILENAME);

            imgChart.Save(chartFilePath);
            //Expose path through property 
            ChartFilePath = CHART_PATH;

            imgChart.Dispose();
        }

The above code needs some refactoring but wil get you started.
In the Razor file simply read in the image created

 

Customer Shares

@if(controller != null && controller.ChartFilePath != null) { Pie Chart }