Saturday, 20 November 2010
Enterprise Architectures - skills, perspectives and insights - Tom Graves replies
Read more here : http://weblog.tomgraves.org/index.php/2010/11/20/creating-a-career-in-enterprise-architecture/
Tuesday, 5 October 2010
HoC is up on codeplex
HoC = Herd Of Cache.
Tuesday, 13 July 2010
Azure opens up for Private cloud - Windows Azure Platform Appliance
But still, the upfront cost could be high; this is not yet published. Check more here
This is also interesting since my last blog entry did refer to this thought!
Tuesday, 15 June 2010
Cloud Thoughts - 2
Registering a server to this free public cloud would then be a voluntary effort. This could have been a possibility if Azure allowed in-premise setup in the first place.
Can I call the end result as "Distributed Cloud Computing" ? Cloud computing that is distributed.
Monday, 14 June 2010
Cloud Thoughts - 1
Cloud Cumulus
A single cloud access point that internally seamlessly talks with the subscribed cloud providers. Eg:- Subscriber A could subscribe to the services of Amazon, Google and Micrsoft (yes, Subscriber A is quite well off) cloud services. Subscriber A would deploy the same app on each of these servers and provide a single service URI. Subscriber A's customers would be serviced by one of the cloud provider seamlessly - perhaps with parts of the request being handled by more than one provider. Session states, data etc being shared across clouds is interesting.
For A's customer, there is only one cloud. The cloud of cloud providers / Cumulus Cloud accessed with a single entry point.
Perhaps, once the Unified Cloud Interface (UCI) is in place, this could be built?
Upgrade Ease
How easy is it to upgrade a cloud based app that is actively serving hundreds of users? Came across this for Azure : http://msdn.microsoft.com/en-us/library/ee517254.aspx
Not sure what happens to the application state. If an 'In-Place' upgrade is followed, does it mean that at a particular point in time there could be two instance of the same application running on different versions?
Chess On Cloud
Though there are numerous instances of distributed chess engines, has anyone attempted to get a chess engine on the cloud? I guess the only person who can try this out today is Bill with his Azure and his $'s.
Everyday Enterprise Architecture - The book - full download
Note: though the page might say its a preview edition, its actually the full book.
Monday, 10 May 2010
Review - Book - CLR via C# 3rd Edition by Jeffrey Richter
Tuesday, 23 March 2010
Setting Physical Memory Limit for a .NET application
The straightforward way appeared to use Process.GetCurrentProcess().MaxWorkingSet. Strangely, no matter what we tried, this never worked. Yet to figure out why it does not work - if anyone has a clue, please ping.
Anyways, looking at options we came across job objects in Windows that allow setting the max working set. So the approach that finally worked was this:
1.) Create a Job object using CreateJobObject() Win32 call
2.) Setup the memory limits against this job using
SetInformationJobObject()
3.) Assign our process to this job using AssignProcessToJob().
Now, when we look at the task manager, the physical memory assigned to this process never goes over the specified limit. All good.
Note that this is applicable only for the physical memory and not for the virtual memory - no limits can be set for this [?]. The physical memory limit is affected when the application is paged-in from the page file into the memory.
Thursday, 18 March 2010
Exploiting ObjectFromLresult() to get the IHTMLDocument2 from a window handle
This is interesting as with just a window handle, it was relatively unknown on how that can be mapped to an object.
What you need to do is this:
1.) Register the windows message WM_HTML_GETOBJECT
2.) Send this message to the window handle we have in hand using a SendMessageTimeOut(). The out parameter in the lpdwResult returns you an UIntPtr to the object after the call.
3.) Next, use this out parameter as part of the ObjectFromLresult() call:
ObjectFromLresult(result from sendmessagetimeout, IHtmlDocument, 0)
4.) Cast the result from ObjectFromLresult() to IHTMLDocument2.
5.) Use the all property to get the HTML elements.
The powerfull function here definitely is the ObjectFromLResult() which effectively returns you an object that is 'accessible'. Accessible in terms of the user accessibility factor.
A framework worth checking out in this regard is the UIA framework that allows manipulating individual entities on the screen be it winforms, browser controls...
Wednesday, 24 February 2010
Azure Computing Usage, Metering etc and how MS gets richer
Quickly calculate Azure ROI/TCO
Interested in quickly calculating the ROI/TCO for your application once it is deployed in Azure? Check out these two:
1.) http://www.microsoft.com/windowsazure/tco/
2.) http://neudesic.cloudapp.net/azureroi.aspx
View/Query tables/data in Azure Dev Storage
When deploying application on the development fabric, you would usually need to actually view the dev storage - say check out the tables, write a couple of SQLs against it etc. OOB, there isn’t any support in VS2010/tools from MS. Note that development fabric is different from the Azure Storage in the cloud. Development fabric, dev storage resides on your local machine.
A very good tool you could use to access the dev storage for free (in addition to the azure store if you are a registered user) is Cloud Storage Studio from Cerebrata. Check more here:
http://www.cerebrata.com/Products/CloudStorageStudio/Default.aspx
Do let know if you come across any more free/thin/sleek/nifty tool that works.
Friday, 5 February 2010
Concurrency & .NET
With earlier versions of .NET, you had the Thread class, the BackgroundWorker class and highly recommended ThreadQueue class. (lets not worry about all the sync objects that came along). With multi-core machines all around, the possibilities in .NET 4.0 are endless :
a.) Parallel Extensions (PLINQ + TPL)
Integrating parallelism right into the framework design while expoiting the extension methods has made expressing concurrency easier. Had a loop that you wanted to execute in parallel? Just use the Parallel.For().
1 core? 2 core? n core? Not sure how to exploit them? Just use the framework provided by TPL (Task Parallel Library) - your applications would scale (not worrying about the internal design/syncs for the moment) based on the number of the cores. Nice. The best part is, C# language and the supporting framework structure appears to move towards the functional programming paradigm - wherein you are not worried about how to do the job but more about what to do. LINQ, TPL, Parallel-extensions etc seems to be inspired by this functional paradigm as in Haskell [my current interest area)] / F#.
Want to dig real deep with some great samples ? Check this out : http://code.msdn.microsoft.com/ParExtSamples
b.) Axum
A very interesting .NET programming language from the MS research yard to check out. A language built with concurrency as the primary design objective. You have 'agent's (think about a block of code being executed independently like threads) talking with each other through the 'channel's using the 'message's (think about the all sync-objects you used to get two threads to talk with each other, but easier). Very promising - you could write your core domain objects in C#, use them within Axum wherein you would ave laid out your concurrency logic.
Check out http://msdn.microsoft.com/en-us/devlabs/dd795202.aspx , http://en.wikipedia.org/wiki/Axum_(programming_language)
c.) DirectCompute
Would like the exploit the massive processing power of your GPU? Check out the DirectCompute library. A DirectX 11/10 based framework that lets you offload tasks onto the GPU - awesome. In similar lines, also check out Brahma framework written by my ex-collegue Ananth at http://brahma.ananthonline.net
Dont miss the DirectCompute session video (http://microsoftpdc.com/Sessions/P09-16) which also showed some cool applications. Was amazing to see the computationally intensive job being done by the GPU while the CPU stayed at ~0% utilization !
d.) Dryad
Yet another product from the MS research aresenal, Dryad appears to be more targetted at making writing distributed applications easier. Need to check this out in detail - once I find an HPC server to do the installation, then perhaps port DES to it?
Check it out further at http://research.microsoft.com/en-us/projects/dryad/