Today I woke up and I found more, more, more…..
The song is by Minnutes and called “More to Love”.
And here is the ad
Today I woke up and I found more, more, more…..
The song is by Minnutes and called “More to Love”.
And here is the ad
Saw this documentary on PBS that chronicled the hardships 3 families had to go through while trying to provide health-care for their loved ones. It really drives home the point as to why the pre-existing conditions clauses need to be removed: many of us just don't realize that we are just one medical surprise away from loosing our homes and bankruptcy and everything we have worked so hard for. Remember the only body that can change it is Congress and you need to tell your elected representative what you want done in your name.
Read more about the documentary and pre-existing medical condition clauses on the PBS website: http://www.pbs.org/now/shows/health-care-reform/now-segment.html
Laodicean • \lay-ah-duh-SEE-un\ • adjective
: lukewarm or indifferent in religion or politics
Just saw this piece on 60 minutes about the latest in prosthetic arm technology – its called Luke.
The degree to which the robotic arm mimics a real arm is amazing. The robotic leg that is shown is very cool too and its amazing how close it looks to the legs that were seen on RoboCop in the movie RoboCop.
Came across an interesting article on CNNMoney, that talked about the fact that if you lend money to anybody at below a certain rate, then you could be assessed the difference as part of your income tax.
The minimum rate that you need to lend money at is determined by the Applicable Federal Rates (AFR). The rates are published monthly at http://www.irs.gov/app/picklist/list/federalRates.html
There are 3 sets of rates – short-term (under 3 years), mid-term (3 to 9 years) and long-term (beyond 9 years).
And here is the CNN Money article where I first came across this information: http://money.cnn.com/2009/09/14/pf/expert/family_lending.moneymag/index.htm?postversion=2009091505
Starting a new category of posts that are aimed at me as a “Note To Self” (NTS).
My first one is to check out the .Net Service Bus
While looking for coding guidelines for Windows Communications Framework (WCF), I found the following resource from the IDesign website.
Here is a direct link to the zip file containing the standards - IDesign WCF Coding Standard
A good way to stoke your ego (or make it drop)…. check out what its valued at by WebTrafficAgents. Check out what my blog is worth: http://www.webtrafficagents.com/WebSiteValue/blog.aggregatedintelligence.com
If your WCF service and SilverLight app are hosted on 2 separate domains then you might come across the following cross-domain access error:
An error occurred while trying to make a request to URI 'http://xxxx'. This could be due to attempting to access a service in a cross-domain way without a proper cross-domain policy in place, or a policy that is unsuitable for SOAP services. You may need to contact the owner of the service to publish a cross-domain policy file and to ensure it allows SOAP-related HTTP headers to be sent. This error may also be caused by using internal types in the web service proxy without using the InternalsVisibleToAttribute attribute. Please see the inner exception for more details.
I use Verio to host my web-sites and I had to add this very simple XML information to the root folder to overcome this error: (file should be named crossdomain.xml)
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>
Note:
What about using ClientAccessPolicy.xml?
It turns out that you can also use the ClientAccessPolicy.xml file to provide cross-domain access. Here is what the contents should look like (the file needs to be copied to the same location as crossdomain.xml – the root of the website).
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="*">
<domain uri="*"/>
</allow-from>
<grant-to>
<!--Change WCFServiceFolder to reflect your setup -->
<!--If you want to provide access to all folder use /-->
<resource path="/WCFServiceFolder" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
So which one should you use:
The crossdomain.xml file is used by both SilverLight and Flash apps. But crossdomain.xml does not provide you the fine grained control that ClientAccessPolicy.xml provides (you can see that in my example above, where I provide cross-domain access only to the WCFServiceFolder sub-folder). Also, Silverlight will first check if the ClientAccessPolicy.xml file exists and will use the CrossDomain.xml file only if it doesnt find the ClientAccessPolicy.xml. So its a good idea to use both.
Get more information from this post:
Using Silverlight 2.0 clientaccesspolicy.xml vs. crossdomain.xml for Web-Service cross-domain access (from Cesar da la Torre Blog)
Working in Visual Studio with the Visual Studio Development Server:
Just drop the above ClientAccessPolicy.xml file in to the root folder of your web-service solution and you should be good to go.
I have been playing with Silverlight and WCF over the last couple of weeks and today I tried moving the service to my web-host “Verio”. Unfortunately what was working on my local machine – stopped working on web-host’s machine and I was getting the following error:
This collection already contains an address with scheme http. There can be at most one address per scheme in this collection.
Parameter name: item
The problem is related to how different services can be hosted on the same server and the fact that ASP.Net and WCF are processed by different pipelines. I found that with .Net 3.x, Microsoft added some new configuration elements that allow you to control the addresses used. I dont understand the exact reason that causes the problem, but the following worked for me:
Add the following to your web.config file inside the “system.serviceModel” node:
<serviceHostingEnvironment>
<baseAddressPrefixFilters>
<add prefix="http://www.aggregatedintelligence.com"/>
</baseAddressPrefixFilters>
</serviceHostingEnvironment>
Read more about the baseAddressPrefixFilters at http://msdn.microsoft.com/en-us/library/bb924481.aspx
pink • \PINK\ • verb
1 a : to perforate in an ornamental pattern* b : to cut a saw-toothed edge on 2 a : pierce, stab b : to wound by irony, criticism, or ridicule
Recently I had to look into an ASP.Net application, which was consuming way too many SQL Connections and was causing problems to our web-server.
The way we were able to tell that the issue was being caused by too many SQL Connections being consumed was by profiling the “.Net Data Provider for Sql Server”.
Here is how you need to setup the performance profiler.
Open up the Performance console. Click on the “+” icon to add a new counter.
Select “.Net Data Provider for SqlServer” under Performance Object.
The 2 counters that I found most useful are:
1. NumberOfPooledConnections and
2. NumberOfReclaimedConnections.
Select the 2 counters and make sure that you select the correct instance from the Instance list. Click on Add.
Now use the Microsoft Web Application Stress Test Tool to exercise your web-app. (Remember to set Stress Level and Stress multiplier values under settings as well as the test run time).
Note: number of concurrent tests = stress level x stress multiplier
Now lets take of an app that was badly written and see how its graph looked like when it was exercised using the stress test tool:
As can be seen from the graph, both the “numberOfPooledCOnnections” and “numberOfReclaimedConnections” grow rapidly. This is probably because the sql connections were not be closed explicitly. At this point some definitions are in order:
numberOfPooledConnections: the number of open sql-connections
numberOfReclaimedConnections: the number of sql-connections that were closed because of the garbage collector running and reclaiming those Sql-Connections.
One should aim for numberOfReclaimedConnections to remain level at zero. Which would mean that you as the developer are proactively closing out each and every SqlConnection that you are opening. Keeping this number low, also saves CPU cycles.
As for numberOfPooledConnections, one should aim for slow growth which reaches a plateau. This should never grow quickly, as that could mean that you might hit the hard limit of the number of concurrent SqlConnections that can be open from your server.
So how should a well written app look? Lets take a look at the graph:
As you can see here, the numberOfReclaimedConnections remained level at zero. The numberOfPooledConnections grew only to 9, even though I was using 100 simultaneous connections to test the web-app (the same number that was used to test the app when the code wasnt pro-actively closing out the connections).
Final note:
I prefer to create a new SqlConnection object within a using block. This allows me to forget about the management of the Sql Connection (which is automatically closed once program execution leaves the using block – either normally or via an exception). Also, it is almost always a good idea to write your methods that work with your database, in such a way that they take a SqlConnection object. This way, the caller of the method knows that they will need to manage the connection object. It also allows you to leverage the same connection object across multiple operations on a database that occur at the same time.
One of the ways in which too many open SQL Connections manifests itself is that you will get connection time-outs.
Sample code:
using (SqlConnection connection = SqlUtil.GetConnection()) { connection.Open(); SqlDataReader sdr = null; using(SqlCommand command = new SqlCommand("select * from test", connection)) { sdr = command.ExecuteReader(); bool dataLoaded = sdr.HasRows; sdr.Close(); } }
You should review stored procedures that use dynamic sql for security vulnerabilities.
Here is a Sql statement that can be used to list all stored procedures that use some form of the Exec command. These should be reviewed to determine if any security vulnerabilities exist.
SELECT object_Name(id) FROM syscomments WHERE UPPER(text) LIKE '%EXECUTE (%' OR UPPER(text) LIKE '%EXECUTE (%' OR UPPER(text) LIKE '%EXECUTE (%' OR UPPER(text) LIKE '%EXECUTE (%' OR UPPER(text) LIKE '%EXEC (%' OR UPPER(text) LIKE '%EXEC (%' OR UPPER(text) LIKE '%EXEC (%' OR UPPER(text) LIKE '%EXEC (%' OR UPPER(text) LIKE '%SP_EXECUTESQL%'
And here is some good information about Sql Injection that a friend pointed out to me:
http://www.sommarskog.se/dynamic_sql.html#SQL_injection
If you try using the Web Application Stress tool to test pages on a locally hosted web-app, then you will find that the page that the recorder spawns in your browser, does not work.
I found that you need to add a period at the end of localhost to make it work.
eg: http://localhost./connectionTestWebsite/
you can also use your computer name instead of localhost. This issue is similar to why Fiddler does not work when you try using localhost in the address (which I blogged about in Fiddler Tips & Tricks)
A list of top 10 SQL programmer mistakes and how to correct them. A good read.
http://www.simple-talk.com/sql/t-sql-programming/ten-common-sql-programming-mistakes/
1. Updating a DOM element from Silverlight:
HtmlPage.Document.GetElementById("divStatus").SetProperty("innerHTML", "<b>loaded</b>");
HtmlPage.Window.CreateInstance("testFunction", new string[] { "loading done" });
<script type="text/javascript"> function testFunction(s) { document.getElementById("divStatus").innerHTML = s; } </script>
3. Calling a method in the SilverLight class
In the XAML code behind, in the constructor, you need to add the following code:
HtmlPage.RegisterScriptableObject("svMainPageObj", this);
[ScriptableMember] public void TestMethod(string value) { string v = value; }
var obj = document.getElementById("veMapObj").content.svMainPage; obj.TestMethod("hello");
<object id="veMapObj" data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
4. Passing initialization parameters to the SilverLight object
Sometimes, you need to pass initialization parameters to the SilverLight object. The object definition in the HTML page, provides initparams as a mechanisim to do this (in the object definition of the SilverLight object in the aspx page) add the following:
<param name="initparams" value="val1=silverlight,val2=asp.net" />
private void Application_Startup(object sender, StartupEventArgs e) { var o1 = e.InitParams["val1"]; var o2 = e.InitParams["val2"]; this.RootVisual = new MainPage(o1,o2); }
If the code-behind class has a property called MySampleProperty and if it returns a string value, then this is how you can access it in your javascript:
1: <script type="text/javascript">
2: function onAppLoad()
3: {
4: var vSampleProp = '<%=MySampleProperty%>';
5: alert(vSampleProp);
6: }
7: </script>
Realize, that I am saying “access” and not call. Because, what happens here is while the ASP.Net is building the web-page to send down to the browser, it sees the code inside <%…%>, calls the property, fills in the value and then sends it down to the browser.
If you need to “call” a method on the server then you need to look at web-services. (Basically you will need to use AJAX, to get the server to send your data asynchronously).
I have had the iPhone for over a year and I use it all the time, all over the place. It reminded me of an essay that I had written while I was applying to graduate school. In that essay I had written about how I envisioned a future where the Internet and computer devices were ubiquitous in our lives – making us productive – not only by helping us do our work better, but by sharing our knowledge with others.
I just saw on ABC news a report on how the iPod touch was being used in schools to replace books and provides a whole new way of teaching students (saves paper, information is instantly updated, research can be done at any time – and the student could be texting instead of studying!)
The news program made me think of what computers might look like 10 years from now and here is some day dreaming:
Devices like iPhone will have the same amount of power and memory as my desktop and laptop machines. Just like today, I will be able to use the device on the go to do my work (browsing, checking my mail and other useless stuff). As soon I get home or work, I will be able to plug the device in to a dock and will be able to use the entire power in the device using a large screen monitor and keyboard. (The desktop screen will support multi-touch and will allow me to use gestures to get a lot of work done). In addition, I will be carrying a touch-enabled screen in my back-pack, which I can pull out when I need to do work on the go, plug in the pocket device and be able to do what I normally do with a laptop today.
And remember, I am thinking of a device that is as big as a iPhone. But over time, the devices will shrink and could even end up being as small as a watch.
But for now I would be happy with a iPhone sized device that would be the center of all the other devices that I use in my world.
Snap! Snap! waking up…. need to stop day-dreaming! :)
What am I doing right now? Taking the Bing SilverLight Map Control for a quick spin.
The first thing you need to do (after installing the Silverlight SDK) is to download the Silverlight Map Control SDK. It is currently in CTP and can be downloaded from the following site:
https://connect.microsoft.com/silverlightmapcontrolctp
At this time, you need to “self-apply” for access to the CTP (which means you need to log in with a live account and click on the apply link).
Hello World Sample for SilverLight
This was easier than I could imagine.
I created a SilverLight application using the new project wizard:
on the next page I had to make sure that I selected that the app would be hosted in a web-site and I set it up as a web-application project.
Next, I added a reference to the SilverLight map control to the SilverLight project. (which I found in the following location - C:\Program Files\Microsoft Virtual Earth Silverlight Map Control\CTP\Libraries)
Now, I all I had to do was add the control to my SilverLight page. VS had already added a page called “MainPage.xaml”. I had to first add the following line to the navigation node of the document (to reference the namespace of the map-control in the document):
xmlns:m="clr-namespace:Microsoft.VirtualEarth.MapControl;assembly=Microsoft.VirtualEarth.MapControl"
Final step, add the control to the page.
<m:Map/>
Run the application and you should see the following:
That was EASY!
Since I set Chrome as my default browser, everytime I debug a web-app – it opens up in Chrome.
But I wanted my web-apps to open in IE when I was trying to debug them without changing my default browser. Turns out there is an easy way to do this in Visual Studio.
In the solution explorer, right click on an aspx file and select the “Browse With” option. In the dialog that pops up – select the browser that you wish to test against.
Very useful tip!
When I tried to download my first Mac app from the Internet (Google Earth), it got downloaded as DMG file. When I double clicked it, the file seemed to get mounted and a icon representing the contents showed up on my Desktop. I was able to open the icon and inside was an icon for Google Earth, which I could run. But after restarting the Mac, the icon representing the DMG file had disappeared from the desktop.
This app delivery format intrigued me and I also began wondering what is the correct way to use these applications and here is what I found out:
My wife replaced her Windows laptop with a MacBook Pro and here are my thoughts:
Though, as a lifetime Windows user I am still having trouble getting used to the Mac interface. (like the maximize button does not really maximize the window).
How much ever I like the MacBook’s styling the one thing I do feel at this time is that the MacBook can work only as a secondary machine. Windows will have to be the primary machine just because over the years I have gathered all the tools that allow me to get the maximum out of my Windows machine (not to forget the fact that I am a “Windows” based applications developer). Case in point – I have not found a good free replacement for Windows Live Writer for the Mac.
As I continue using the MacBook, I will blog about how I feel about it as well as blog about how to different things on the Mac, when you come from a Windows background.
Web-pages as graphs allows you to visualize a web-page’s DOM as a graph. Not sure if the tool has any analytical uses. But it is very cool to see it build out the graph.
Here is one I did for the DenverGov website that I work on.
http://www.aharef.info/static/htmlgraph/?url=http://www.denvergov.org
The following 3 pictures were taken at various stages into the construction of the graph.
Via: http://blogs.msdn.com/securitytools/archive/2009/09/08/how-to-publish-an-asp-net-website-from-a-command-line.aspx (by Syed Aslam Basha)
A batch script to publish an ASP.Net website from the command line – very useful.
@ECHO OFF
set WEB_ROOT=C:\inetpub\wwwroot\mytestsite
set PROJECT_ROOT=D:\Source\website
echo Publishing site %PROJECT_ROOT% to %WEB_ROOT%
del /S /Q %WEB_ROOT%\*.* || goto Error
rmdir /S /Q %WEB_ROOT%\ || goto Error
aspnet_compiler -p "%PROJECT_ROOT%" /v /commercesite /d "%WEB_ROOT%" || goto Error
goto Success
:Error
echo Site was not published
goto End
:Success
echo Site published successfully
:End
Recently read the article Software Engineering: An Idea Whose Time Has Come and Gone? Its definitely an interesting article.
My biggest take-away…. It will always be important to engineer a software product. But it is equally important to not get caught up in the engineering processes that are used to drive the construction of the product.
And if possible, never take on a software project where the value of the end-product will not be much greater than the value of effort taken to implement it – because on such projects one needs much tighter controls and the engineering process can begin to strangle the project it-self. Instead take on projects where the value of the out-come is much greater. That way, you dont have to worry as much on the engineering controls as much as the engineering design of the product. Finally, invest in smart people who will self-organize as a team to accomplish goals. Such teams will automatically create a well engineered product which comes in under-budget and on-time.
Here’s a quick summary of software and tools that offer best practices for you to use in your software from patterns & practices: Best Practices for Your Software Available for Free:
Five things to avoid in a demo. (And I know I have been guilty of each one of these as I learned how to present a product in front of a large audience – I used to present Feature Analyst and Lidar Analyst at user conferences and training sessions)
Here is a summary dump from the post (but I suggest you read the article as it describes every point in detail).
Don’t:
I have watched many videos on TED and I have enjoyed many and learnt a lot on a variety of topics. But this one by Mike Rowe was one that had many teaching moments in it that apply to everyday life. Very appropriate for this Labor day weekend!
A must watch.
ripsnorter • \RIP-SNOR-ter\ • noun
: something extraordinary : humdinger
As a kid I loved building paper planes. This video brought back some great memories. (My best one was a model of the space shuttle with ailerons, rudders and all).
The Touch and Go flight tracks and cross wind flight tracks map for Centennial Airport overlaid in Google Earth.
Here is what I found out while doing research when I was planning on buying a house in this area: The western most runway is the one that is used by most of the trainer aircraft. The “race-track” configuration shown above, I believe is what is used by trainee pilots to practice take-offs and landings. (DISCLAIMER: I am not a pilot and nor do I remotely claim I understand anything airborne – so do your own research and verify the above information for yourself)
The KMZ file below can be opened in Google Earth to get a better understanding of the flight tracks shown in the FAR Part 150 study and their relationship with the different areas around the airport. (Its what I used to create the screen shot above)
Also, the FAR Part 150 study page of the Centennial Airport has a ton of useful information that you can use to get a better feel for the noise associated with the area around the airport.
Centennial Airport Part 150 Noise Study
Disclaimer 2: Noise is a very subjective and relative issue – not everyone is similarly sensitive to noise – So again – do your own research – and figure it out for your-self.
Disclaimer 3: Because the image was overlaid manually – it is not perfect and some locations there might be a slight distortion of the exact area (eg: road or neighborhood is shifted a little to the north-west, etc).
[Update 09-05-2009] – Noise Level Map
Here is a noise level map that I got from the Part 150 study (page 4 from 09 CEN IssuesActions.pdf). This map is a lot more useful as it displays the noise levels based on abatement procedures as predicted for 2005 when the study was done. It attempts to predict what the noise levels will be. (Read the document to see what the abatement procedures were. Also check for yourself if the abatement procedures were implemented or not – as the noise contours could change based on that information).
The contours shown starting from the one closest to the run-ways are: 75DNL, 70DNL, 65DNL, 60DNL and 55DNL.
Download and view in Google Earth using the following link:
If there is another map overlay that you would like to see for this area – leave a comment with information about where I can get a copy of the map and I will try and create one and post it here. (Or create it your self – here is a video on how to do just that http://www.youtube.com/watch?v=D9LcwbwQgzk)
[Update 02-08-2010]
I bought a house inside the 4th ring from the airport. After living in that area for about a month and a half here is what I can say about the noise level: the planes are noisy - some more so then others. But for the most part you just get used to it and you begin ignoring them. I lived in downtown Denver (Capitol Hill) and to compare the noise level, I must say that it is easier living here - as the airplane noise is not constant - as opposed to the constant noise of traffic and emergency vehicle sirens downtown. So it definitely is not too bad. But there are some propeller planes that are really NOISY. I wish there were a way to identity these and report them to the noise mitigation department at the airport. The jets are surprisingly quite - must be the newer technology and the speed with which they depart the airport's vicinity. Most propeller planes (seem to be students) arent noisy. So I think it is probably the real old ones or badly maintained ones that make the most noise.
Will continue updating as I continue living in this area.
Here are some of the reforms that are part of the health care coverage that is makings its way through Congress currently:
Sounds like all good ideas – not sure what the fuss is all about – seems pretty clear to me that as a patient I would want all of the above to pass.
When the case of the letters in the URL cannot be conveyed – then you should not use Bit.Ly. A perfect example would be when you need to give some one a URL over the phone (or a podcast) – unless you dont mind saying “uppercase A, lowercase x, uppercase C”.
Here are some examples:
http://bit.ly/Yr7qw – goes to MSDN article “When to Use MSDE”.
http://bit.ly/Yr7qW – goes to an article on www.myDigitalfc.com
http://bit.ly/Yr7QW – goes to GumTree.com (a weird dating site!)
You get the idea!
Use the TinyURL service if you dont want your URLs to be case sensitive: http://tiny.cc/7ww2e
http://tiny.cc/7ww2E
http://tiny.cc/7WW2E
All of the above resolve to the same MSDN article.
Need to share your desktop with other people? Need it to work across FireWalls, etc?
I just tried Microsoft’s SharedView.
Here are my thoughts:
A quick note:
If you want to use ZoomIt – then you need to share the entire desktop – not just a single application window.
You can detach the chat window – very nice if you use dual screens.
While looking for a house in Denver, one of my requirements has been that the house should be close to the light-rail corridor. To verify the requirement I would check the address in Google Maps, but I could never determine if the house fell into a Call-N-Ride area. So I created this map based on GIS data that was available on the RTD site.
Learn more at: http://www.rtd-denver.com/callNRide.shtml
From RTD’s website: RTD call-n-Ride is a unique curb-to-curb transportation service, taking riders to and from destinations within a designated geographic service area. Riders can travel from home to work, shopping, doctor's appointments and return home from any other destination within the geographic boundaries of each call-n-Ride service area. call-n-Ride vehicles are small buses and are wheelchair accessible. The service is also designed to connect with many RTD park-n-Rides, other RTD bus routes and light rail for travel throughout the metro area. Best of all, call-n-Ride costs the same as a Local cash fare.
Service Areas
RTD currently operates 19 call-n-Rides throughout the metro area. Click on the call-n-Ride areas below to find more information about the service including service area boundaries and contact information.
(data downloaded on 09.02.2009)
Quick, easy and free way to get from shapefile to KML – use Shp2KML. Shp2Kml works well but fails when the shapefile has a projection that is different from lat/lon or UTM.
In this case use FWTool’s Ogr2Ogr.
ogr2ogr -t_srs EPSG:4326 -f KML outPutFileName.kml inPutFileName.shp
More information about using ogr2ogr:
To get all the attributes in the shape file use OgrInfo:
ogrinfo ParkNRides.shp -al -fid 0
the above command outputs all the fields associated with the shape with ID 0. This will give us a list of attributes in the shapefile.
Next use the following command to output the fields with the KML file:
ogr2ogr –SELECT “field1 field2 field3” -t_srs EPSG:4326 -f KML outPutFileName.kml inPutFileName.shp
ArcGIS Explorer 900 works on Windows 7
Though – it seems to interfere with the Aero display framework:
If you plan on using Visual Studio (2008) for SilverLight 3 development then remember to install the SilverLight 3 Tools for VS 2008.
Get if from:
http://www.microsoft.com/downloads/details.aspx?familyid=9442B0F2-7465-417A-88F3-5E7B5409E9DD&displaylang=en
If you create a project in Expression Blend 3 and you are unable to open the project in Visual Studio, then you most probably havent installed the Silverlight 3 tools for VS 2008 package.
If you have SilverLight 3 tools installed for Visual Studio – you should see the following project templates in the new project dialog: