VS2010 C++11 Variadic Templates

 

If you’ve been following the changes in the C++11 standard you may have heard of Variadic templates. In layman’s terms: var arg template parameters.

Lets take c# to explain what we’re talking about: Take the Action generic delegate, there’ 16 of them! One overload for each parameter.

image

However in c++11 we should (when the compiler supports it) be able to use to indicate that we can have a variable number of type parameters ( I expect comes form java).

The long and the short of it is, they don’t work yet in vs2010 yet Sad smile

image

I wonder do they work in VS11? I’ll update this post once I get a chance to fire it up. I’ll also fire up my Linux machine and give the GNU compiler a whirl.

Stay tuned…

 

** update: Doesn’t work in VS11 either.

Silverlight Fluid Motion

 

You know what?
I love Silverlight!

The only reason I don’t spend more time in it is the ASP is more suited to non enterprise applications.
However tonight for you dear reader I’ve got an enterprise application (below)

image

(because every enterprise had an application that shows pictures Smile; yes really this was a requirement honest Be right back)

Blend

So you are writing a sliverlight app, or course you could code it all by hand.

In the last year, I’ve even met Silverlight/WPF programmers, lets call them Xamlers, that turn their nose up at using a designer, hey I’m sure it’s got it’s advantages and these people know XAML better than me, but IMO life is too short and programmers are too expensive to be living in notepad. Would you code your designer code in a windows forms app? not use scaffolding in MVC? etc etc..

For me Blend is blessing in disguise, I’m not sure the mythical devigner that is both an amazing designer AND an amazing coder (term coined by Scott Hanselman I think)  exists, but Blend does really help.

Overview

The application is simple, It selects some pictures in a folder and displays them in a list. When an item is selected in the list the picture should zoom out from the listbox item and scale to it’s full size.

Simple ey… yes of course (when you know how).

 

Steps

1. Create a new expression blend silverlight project

image

2. Add a sample datasource, some text and a picture

image

image

image

3. Drag the collection onto the page

image

4) Select details mode in the properties pane, and drag out property 2

image

image

If you were now to run your application you’d see that when you select a picture it appears in the main picture also. But our requirements were to slide out the picture from the list itself.

5) Select the big picture and drag fluid move behaviour onto it

image

6) Change the tag property to datacontext

image

Now do the same for the Itemtemplate

image

7) Drop a FluidMotionSetTagBehaviour onto the image part,setting the datacontext

image

 

 

That’s all that’s needed, you app should now run, animations and all.

image

I would provide the sample but I’ve used 11megs of pictures so it’s a little too big to expect you to wait for Smile

I might get some time to reproduce this app in html5, android, c++, java would be nice to compare and contrast.

Start blending xamlers!

MVC Mailer on NuGet

 

So have you ever found yourself doing this?

image

Well no there’s a nicer alternative whereby you can build up your mail in html.
Check out the MVCMailer package on Nuget.

 

PM> Install-Package MvcMailer
Attempting to resolve dependency 'T4Scaffolding (≥ 0.9.7)'.
Attempting to resolve dependency 'EntityFramework (≥ 4.1.10311.0)'.
Successfully installed 'MvcMailer 1.1'.
Successfully added 'MvcMailer 1.1' to TCF.


---------------------------READ ME---------------------------------------------------

Your default Mailer Scaffolder is set to Mailer.Razor

You can generate your Mailers and Views using the following Scaffolder Command

PM> Scaffold Mailer UserMailer Welcome,GoodBye

Edit the smtp configuration at web.config file before you send an email

You can find more at: https://github.com/smsohan/MvcMailer/wiki/MvcMailer-Step-by-Step-Guide

-------------------------------------------------------------------------------------

PM>

Android

 

So it took me 2 hours (downloads on 2mbps included) to create an Android app in eclipse.

Wonder is that something I should be proud of giving I’ve been in software for nearly 15 years now…. 2 hours for a hello world… 

image

Listening to .net rocks and Xamarin podcast got me thinking, I really should see what’s involved in creating an Android app, after all I’m a registered Microsoft and Apple developer, I can create Wp7 apps in my sleep, I’ve even flirted with iOS, why not give Google and Android a shot.

I was going to install MonoDroid for VS2010, but hey i’m doing a hello world, no need for all this cross platformability. I’ve been doing a fair bit of java lately and eclipse doesn’t frighten me anymore so I just downloaded and installed the tools, and created the above app.. baby steps..

Any downsides? yes,, Now I wanna buy a Android tablet Who me?.

EF 4.1 Code First Database re-create

 

If you’ve upgraded to Entity Framework 4.1 you may have noticed the following no longer compiles. (the line of code that causes the database to drop and recreate on schema change).

image

Solution

DbDatabase.SetInitializer(new DropCreateDatabaseIfModelChanges<TCF.Models.TCFContext>());

 

image

HTML 5 Audio

 

So does your browser support the html5 audio tag when it comes to MP3s?

Browsers in order of my preference

 

IE9 – Nope

image

 

Firefox 5 – Nope, Moreover doesn't gracefully degrade to my fallback text!

image

 

Chrome 13 – Sure

image

 

Safari 5 – Arguably the best default experience

image

Try for your self and let me know how you get on (excuse the lack of the DOCTYPE, encoding etc.

It’s quote a catchy song, you’ll miss out if your browser doesn’t support it (or you are not familiar with view source Smile )

smart_ptr in java 1.7

 

Darn it but I’ve being doing a lot of Java recently and u know what, I’m no expert but it I think I could even a raise the rating on my C.V. at this stage. My first experience of Java was reading a book back in 2001 belonging to a student friend of mine, the book was lying about so picked it up and read it over the course of a week (yes I had an early addiction to technologies even though I was living in c++ land at the time). I ended up helping with one Final year project a java applet game suite if I remember correctly and in a JBuilder IDE.

Over the years I quickly forgot about my little affair with java and got deeper into c++ which I have to say I loved, around the same time I was having another affair (yes i was a slut) with Microsoft .net beta2. I can’t put my finger exactly on why c# won out for me, but I spent the next few years working on c++ and c#, Java was just something I always left to one side. I always though hey java will be easy, I’ve programmed in c#, same concepts, and moreover I knew c++, so well then c# or java are a walk in the part; while this I guess is partially true, but you’re not prepared you for the curve/slope/cliff you’ve got to climb to learn the IDE and the libraries needed these days.

I’m currently working for a data management company our products are written in java and .net. For the first two years I managed to live in the .net world but lately and mostly due to the success of some of our newer components I’ve been doing quite a lot of java, (a lot more than I ever expected). I’ve also started reading some good books on the subject and you know what I’m as likely to start a test application in Eclipse as I am in VS2010 these days (at least as far as the product components are concerned).

So what’s changed? Well for one the java language is evolving once again which is exciting; so to continue on my smart_ptr series of posts, we can now achieve resource cleanup with java 1.7 with the AutoClosable interface.

For .net people this will be very familiar to IDisposable and the using(var x = new IDisposableDerivedType())

 

   1:  File file = new File("input.txt");
   2:   
   3:  InputStream is = null;
   4:   
   5:  try {
   6:      is = new FileInputStream(file);
   7:   
   8:      // do something with this input stream
   9:      // ...
  10:   
  11:  }
  12:  catch (FileNotFoundException ex) {
  13:      System.err.println("Missing file " + file.getAbsolutePath());
  14:  }
  15:  finally {
  16:      if (is != null) {
  17:          is.close();
  18:      }
  19:  }
  20:   
  21:  Java 7: Try with resources
  22:   
  23:  File file = new File("input.txt");
  24:   
  25:  try (InputStream is = new FileInputStream(file)) {
  26:      // do something with this input stream
  27:      // ...
  28:  }
  29:  catch (FileNotFoundException ex) {
  30:      System.err.println("Missing file " + file.getAbsolutePath());
  31:  }

 

We’re guaranteed that the

is.close(); gets called automatically for us. Have to say I'm a bit jealous that the c# team didn't think of the try() syntax over using.

 
 
 

Why I love the Task library

 

Ok, forget about mvvm, that’s not the point of this quick post…

image

Have a look at that, ain’t it a thing of beauty!?

No more having to get back onto the gui thread, even webforms people have to do it with Control.Invoke
(or sync context).

Parallel task library rocks.

var keyword comes to c++

 

Ok so it’s not the var keyword in c++, but in C++11 it’s called auto.
This is something I love in c#, life would be miserable without it Smile, it’s magnificent especially in linq, infact linq could become quite painful without it (and also dynamic comes in handy in linq).

So where’s the sample?

image

The pDc has local scope and is of type CPaintDC*.

Now don’t be confused with the other place you may have used auto, i.e. back in the early days when we used to be concerned about putting things in registers (before the compilers took over this code generation heavy lifting).
e.g. auto int i = 0;

Sample html5 canvas drawing

 

So how hard is it to draw on a html5 canvas? Well if you ever lived in a GDI+ world like I once did, then it’s pretty simple. In fact it’s somewhat familiar to silverlight/wpf people too, the parameters passed to draw a rectangle for example are , left, top, width, height. (GDI/Windows API people would me more familiar to using left,top,right,bottom (the RECT struct). Nonetheless, IMO drawing with the html5 canvas couldn’t be easier.

image

 

Here’s the code

   1:  @{
   2:      ViewBag.Title = "Home Page";
   3:  }
   4:  <h2>@ViewBag.Message</h2>
   5:   
   6:  <canvas id="canvas" width="300" height="300">
   7:      Canvas not supported
   8:  </canvas>
   9:   
  10:   
  11:  @section Scripts
  12:  {
  13:      
  14:   
  15:      <script type="application/javascript">
  16:      
  17:          $(function() {
  18:              draw();
  19:          });
  20:      </script>
  21:   
  22:      <script type="application/javascript">
  23:          function draw() {
  24:              if (Modernizr.canvas ) {
  25:                  var canvas = document.getElementById("canvas");
  26:                  var ctx = canvas.getContext("2d");
  27:   
  28:                  ctx.fillStyle = "rgb(200,0,0)";
  29:                  ctx.fillRect(10, 10, 100, 1000);
  30:              }            
  31:          }
  32:      </script>
  33:  }

That’s all you need to get started, there are some nice libraries starting to emerge that use html5 canvas (graphing etc)