calummclellan.com

Home
News
Photos
Videos
Code
Subscribe
Download
Tuesday, February 15, 2011
So a couple of weeks ago I bought a new Windows Phone 7 device. I was pretty stoked to find out that all the apps were silverlight-based, this gave me a head start on the development side of things.

I just submitted my first app for publishing on the windows phone 7 marketplace last night. It's a pretty simple app to start out, an rss/atom feed reader. I must say that I'm quite impressed with the submission process, microsoft seems to be testing everything very well, and the strict requirements, although they can sometimes be a bit restrictive, will provide a uniform (and hence intuitive) experience for the end user.

The submission process will take a few days, and in that time I hope to get a development website up and running over at 43degrees.net. I may then move this section of the site over there, but not immediately.
Download
Friday, January 14, 2011
Over the last few months I've been trying to get to grips with the Android mobile OS. Up until now I've just been messing with themes for my X10 (I've written a rough guide here).
This week I have finally taken it a step furthur and started to learn a bit of java so I can start to develop some apps. At a first glance the syntax and structure looks very similar to C# and WPF... we'll see how long it takes me to form a different opinion :)
I am also thinking of getting a Windows Phone 7 device so I can do some work in my preferred language.

Now all that I'm missing are some app ideas... if anyone has any suggestions feel free to contact me. I'd be interested in working on a joint project as well but at this stage my java skills (or lack of) would pretty much restrict me to winmo development.

I will be keeping this section of the site updated from know on (the rest of the site will more than likely be updated sporadically as usual).
Download
Monday, October 25, 2010
It's been ages since I've written anything here. I've been immersed in my latest project at work for quite a while now. It's a data management system written in C# using WPF, WCF and Silverlight (there's also a bit of C++ in there for when it all gets a bit nasty...).
Anyway, I just came across something that, despite having figured it out before, I still managed to forget. In WPF I always seem to have trouble with my images. They always seem blurry and if I set the Stretch property of the Image to 'None' some of the images would still be stretched.
After having figured this out again, I thought I'd just make a note of it here (who knows, it might be habit forming and I might actually get some more content added in the future). It's all very simple really, just make sure the image resolution is 96dpi. I found a lot of image editors will use 72dpi as a default which causes the images to be displayed incorrectly.
Download
Monday, May 17, 2010
I have finished a release version of my C++/CLI Structured Storage library. You can download the .Net 2.0 binaries through the link above and you can get the project (including a C# test project) here (the project is from Visual Studio 2010). I have included the unit test code file in the binaries download as this has some example usage and I haven't bothered with a help file... I did however put a bit of effort into the xml comments so that the xml documentation files provided make using the library a bit easier.

Since my last little rant about providing an 'Any CPU' version I have realised that I was being a complete idiot... All that is required is two versions of the same assembly with the same identity (assembly version, culture and public key). If we add these two assemblies to the GAC then the runtime will load the correct assembly for the current process. This means that you only need to reference the correct assembly while developing and then install both assemblies (or at least the correct assembly for the current platform) to the GAC during distribution. In view of all this I have provided two assemblies with the same identity but have altered the file versions so they can be recognised in explorer (32-bit File Version 10.2.0.32 and 64-bit File Verison 10.2.0.64).

Changes:
I Changed the SummarInfoId and DocSummaryInfoId enumerations to static classes with integer constants. I also added the ExtendedSummaryInformationIds, ProjectInformationIds and MechanicalModelingIds classes for access to the property IDs of the standard Solid Edge properties. I did consider making the standard property sets always available in that they are added upon access if they were missing. The Solid Edge API does this and it is quite helpful when you come across older files that do not have a custom property set. I eventually dismissed this as I don't think it is good practice and problems will still arise when the file is open in read-only mode, you should instead continue to use the Contains method to check if a property set or property exists.

Any feedback is welcome - it would be nice to know that this is getting some use.
Download
Friday, April 9, 2010
Just an update to the silverlight media control. I have added a new feature enabling content to be password protected (you can check out the holiday photos of NZ 2010 to see this in action). I also fixed the full screen video display (it was never true 'full-screen').
Any feedback is welcome - I'm sure there's a few bugs to be found (the could is as messy as ever)...
Also, please let me know if you use this in a project, it would be really nice to know if this is getting used at all.


Since starting app development for Windows Phone 7 I have decided that I would like to use the media controls from this site in some apps. I have hence removed this download. You can still get in touch with me if you want information or parts of the code, I just want to keep the media list code to myself ;-)
Download
Wednesday, April 7, 2010
I have finished a beta version of the Structured Storage API for .Net that supports x64 operating systems. It is written in C++/CLI and hence has to be compiled for the specified platform (x86 or x64). C++/CLI projects only support 'Any CPU' when written in pure .Net (compiled with /clr:pure or /clr:safe). This is logical as any native C++ code has to be compiled for the specified platform whereas .Net code is JIT compiled at runtime. All this means that for a pure .Net application we cannot just have the one platform independent version, we need to deliver the appropriate dll for the specified platform.

In an effort to make things simpler for pure .Net applications I created a second version of the API. This version has a wrapper dll that includes interfaces for the property access classes (IPropertySets, IPropertySet and IProperty) and a static helper class to generate instances of the underlying classes. The idea was to embed the x64 and x84 assemblies as resources in this wrapper and then load the appropriate dll at runtime depending on the current process. I managed to implement this but not completely: Assembly.Load(byte[] assembly) fails if the bytes are from a non-verifiable assembly (e.g. a C++/CLI assembly that uses unmanaged code). This meant that I have to load the assemblies from the file system or the GAC. This version hence requires three seperate dlls (the wrapper, the x64 dll and the x86 dll) but has the advantage of allowing .Net developers to create and deploy an 'Any CPU' application.

This all boils done to the following: Version one includes x64 and x86 versions of the API, Version two has three assemblies of which only the wrapper is used directly.

After beta tests I will publish the code (under the GNU Lesser Public License). If you are interested in testing the beta version then send me an e-mail (mail@calummclellan.com) and I will send you the requested version and a code sample.

One last thing: if anyone knows how to load a non verifiable assembly using a byte array please let me know...
Download
Friday, September 4, 2009
Just thought I'd link to a post of mine on Jason Newells site. I posted some C++/CLI code to read an assembly config file using the Structured Storage API, and included a compiled .Net assembly for use from other .Net languages. At the moment the code just reads the configuration names to make it easier to create a custom open dialog.
I may extend this soon to include Zones and maybe some more information, we'll see.
Download
Tuesday, August 11, 2009
I decided to post the code for the Silverlight content on this site. The code isn't as clean, flexible or reusable as I would have liked, but at one point I decided that I needed to get the site online and the player wouldn't be used anywhere else anyway (at least, not by me). One messy example is the fact that I actually use the media player on the home page of this site (I pass a collection of image urls through the init parameters). One reason for this is that I was too lazy to create a new silverlight project just for the home page but I also didn't want to use a static image, another is that if I use the same control then the background and feel of the pages will always be the same. It also has the small side-effect that the user only needs to download one .xap file (and although the xap file for the homepage would have been pretty small, the entire media player xap file is under 50kb). The player consumes a wcf service on the server to get the media information, I have not included this as it is an unnecessary detail. Just replace the calls to the service with calls to your own data access components.

Since starting app development for Windows Phone 7 I have decided that I would like to use the media controls from this site in some apps. I have hence removed this download. You can still get in touch with me if you want information or parts of the code, I just want to keep the media list code to myself ;-)
Download
Wednesday, August 27, 2008
This is a wrapper library for the windows structured storage API. I created this for use with VB6 clients as at the time most of the Solid Edge programmers out there were still stuck using VB6 (hey - a least it worked!). I have made one or two bug fixes without updating the setup or the help so this download is just a collection of the source code, the dll, the license and the help file.
Download
Monday, October 22, 2007
This is the .Net 2.0 version of my structured storage wrapper. The download includes a setup which installs the source code with license and also integrated help for Visual Studio 2005.
Note: There have been some bugs fixed that have not been fixed in the setup (see here for details). The updated source code is also in the download.
[1]
2