<

Microsoft has Pulled Project Sandcastle for Open Source Violations

Keywords: , , , , ,

In response to community pressure, Microsoft has removed project Sandcastle from their CodePlex website. This is a temporary move while they contemplate Sandcastles future.
Sandcastle is Microsoft’s answer to JavaDoc. Though in active use at Microsoft for several years, it is still a very rough project and appears to be no where near ready for general deployment. Prior to the release of .NET 2.0 and the announcement of Sandcastle the standard tool was the much more mature NDoc. Unfortunately NDoc is no longer being maintained

In response to community pressure, Microsoft has removed project Sandcastle from their CodePlex website. This is a temporary move while they contemplate Sandcastles future. Sandcastle is Microsoft's answer to JavaDoc. Though in active use at Microsoft for several years, it is still a very rough project and appears to be no where near ready for general deployment. Prior to the release of .NET 2.0 and the announcement of Sandcastle the standard tool was the much more mature NDoc. Unfortunately NDoc is ... Read More

OpenSocial Updates: hi5, AOL, MySpace and imeem

Keywords: , , , , , , , , ,

GPS EastToday at Graphing Social Patterns, executives from hi5, AOL, MySpace and imeem provided updates on their OpenSocial platform usage. Patrick Chanezon from Google opened by explaining that Chinese service OpenPNE out of China and StudiVZ out of Germany are the two newest OpenSocial providers. He also shared some updated stats:

– 19 days in production
– 275 million users
– 66 million installs
– 2,000 applications built on OpenSocial
– 20,000 developers
– 10 million daily app users

OpenSocial

 

AOL

The AOL OpenSocial discussion was brief as the panel was almost out of time but the discussion focused on the third-party and advertising aspects.

 

imeem

imeem focused on music and showed off some basic OpenSocial goodies you could build on imeem. Apparently you can access the entire music library on imeem using OpenSocial.

 

MySpace

MySpace came out of the gate boasting how large they are and noted they are twice as large as the nearest competitor (without naming Facebook). The pitch was simple, "want to reach the largest OpenSocial community? Build on MySpace." Staggering stat: 12% of all Internet minutes are spent on MySpace! The MySpace guy wouldn’t answer my question about the costs associated with being a "featured app" - said something about being a developer and not a business guy. I don’t buy it for a minute mister!

 

hi5

For some reason, the hi5 guy decided to open by putting on a gray shirt - he said that all business people wear blue shirts and khaki pants (luckily he didn’t take his pants off!) - the stunt didn’t seem to get much of a reaction from the audience. It felt like hi5 was the little engine that could from his presentation. They do have very strong adoption of the OpenSocial apps by their community.

Partner Links
Manage your finances online with Geezeo
Web Jobs
CenterNetworks LinkedIn Business Group
CenterNetworks Facebook Fan Page
Check out SmugMug for a free trial

Today at Graphing Social Patterns, executives from hi5, AOL, MySpace and imeem provided updates on their OpenSocial platform usage. Patrick Chanezon from Google opened by explaining that Chinese service OpenPNE out of China and StudiVZ out of Germany are the two newest OpenSocial providers. He also shared some updated stats: -- 19 days in production -- 275 million users -- 66 million installs -- 2,000 applications built on OpenSocial -- 20,000 developers -- 10 million daily app users   AOL The AOL OpenSocial discussion was brief as the panel was almost ... Read More

Docstoc Launches One Click Large Document Transfer

Keywords: , , , , , , , ,

DocstocDocument sharing service Docstoc is out with a potentially major upgrade today. The new functionality is called OneClick and allows you to share documents via email no matter how large the files are. I’ve embedded a video that describes the service below. OneClick is a simple desktop widget that you select when you have large documents to share. After the documents are uploaded to Docstoc, the OneClick application opens your default email application and puts the links directly into the email. It’s really simple to use.

Adam Ostrow notes that this new utility will help drive user adoption of Docstoc and I completely agree - this is why I noted that it’s a major upgrade above. Not only will this drive user adoption, it will also help Docstoc to increase their keyword rich content index. While it appears that documents uploaded with OneClick show as private by default, Docstoc would be smart to push users to change the privacy settings on their next login.

The only filetypes that are supported with Docstoc’s OneClick are .doc, .pdf, .xls, .ppt. This may limit the tool’s functionality as other large file email replacement tools like YouSendIt allow you to send any file type. Will the casual user know when to use DocStoc and when not to? Mark Hendrickson has the same concerns regarding file type. Frankly they should allow any file type to be uploaded and just show the files as a list rather than showing them in the Docstoc player. That’d be hot.

The document sharing battle between Scribd and Docstoc is great to watch as it’s forcing both to continue to innovate and that’s a good thing for all of us. Check out our interview with Docstoc CEO Jason Nazar.

Partner Links
Manage your finances online with Geezeo
Web Jobs
CenterNetworks LinkedIn Business Group
CenterNetworks Facebook Fan Page
Check out SmugMug for a free trial

Document sharing service Docstoc is out with a potentially major upgrade today. The new functionality is called OneClick and allows you to share documents via email no matter how large the files are. I've embedded a video that describes the service below. OneClick is a simple desktop widget that you select when you have large documents to share. After the documents are uploaded to Docstoc, the OneClick application opens your default email application and puts the links directly into the email. It's really simple to ... Read More

Develop for Maintenance

Keywords: , , , , , , , , ,

One thing I always keep noticing is that people will develop things without even giving a thought to maintenance.  This somehow seems impolite to me.   I suffer from Coder Alzheimer’s, which means I can’t remember a thing I wrote after not seeing after three weeks. That is why I think about things like maintenance.  I am seeing all new code if I have been away from it for awhile!  Now that is not completely true, but imagine how it may be for the guy who has never seen your stuff.

Challenge: How Easy is Your Code to Run?

I bet you can’t guess how many steps it takes to get your project code running from a blank slate! In fact I bet it takes more than five additional steps for you to get it running. Five additional steps besides getting the source.

Try this. First check in any changes that you need to get in.  Now I want you to blow away your local source files. Everything. Remove the database from your database server. Remove your web settings. Remove any files and folders you may need for processing that didn’t go away with getting rid of your local source files. Go ahead, I’ll wait. :D

  1. Now, pull everything back down from source control.
  2. Crack open Notepad.
  3. Completely set up to the point you can finally run the application locally.
  4. Document every step in Notepad. Save that as a readme.txt file.

How many additional steps did you need to take to be ready to go again? Were you right?

If it does take more than 10 additional steps, you have failed.  If any of them involve getting a file or creating a folder (something you could give them with source control), you have failed (unless that is automated through another file that is in source control). Permissions don’t count as part of the steps.

Maintenance Task 1: Make Your Code Easy to Read

What I like to see when I crack open code are methods named in a way they they actually tell you what they do.  They are also no bigger than about 25 lines and do no more than one task each.  I like it to be so blindingly simple to read or understand that even non-technical people can look at my code and sort of understand what it is trying to accomplish.

Maintenance Task 2: Make Your Code Easy to Run Right From Source Control

I came onto a project a long time ago that it took me a couple of days just to get the thing to compile. Two days! Imagine how much money in lost productivity that was for the company! The other developers on the project never really thought about what would happen if they blew away everything locally and pulled down from source. So they had certain things that were not right. They also kept some things checked out because each of them had conflicts and didn’t really think about how to make it relevant for all of them.

Please make sure to get everything into source that you would need to run the application.  This makes it easy for someone coming in to just download the source and be off and running. This will save your company money.  It makes it really great when someone who has never even seen a line of code of yours that may have to suddenly work on it to be able to have an easy experience getting your code from source and running it as fast as possible.  What does that mean? That means if you have a file you are picking up and processing when running an application, put one in source and check it in. Make sure it builds to the output folder.  You don’t have to have it deploy to other environments, but you need to think about the guy who is developing it locally.

The other thing is don’t ever, ever, ever put yourself in a situation in team development where people have to keep a config file checked out locally because you didn’t use a relative path.  If the path is important to running the application, please make sure it is part of your (local) build process. That also means it should be in source control.  If there is a file that is important to your application, it needs to be in source control as well. 

Maintenance Task 3: Include a ReadMe File For Additional Setup Required After Getting Source

One thing I have seen that I really like is when I pull down open source projects and they come with readme.txt files that I can take a look at and instantly know what I need to do to get the darn thing running besides just getting the code. 

That file you created in the challenge?  Check that puppy into your project’s source control, preferably at the top level.

If any of the steps in the readme file involve creating files or folders, remove them and/or find a way to automate them. Don’t make me create a file in a certain way. Provide me one or the means to build one automatically. Otherwise you are making me think too much. Make it easy for me or I will think you are not really being thoughtful and polite.  I already have enough to think about having to fix something in code I may have never seen before.  Make it blindingly simple for me.

Challenge 2: Give it to Someone Else

Now give that readme.txt to someone and have them follow it. Someone that is not on your project or has used your code before. When they are done, can they run the application locally?  How long does it take them?  How many questions did they need to ask?  Do any changes need to be made to the file to make it easier to understand (or for missed steps)?

Do not give them anything other than the readme and point them to the location to get the source. If they ask for any thing else, you have failed. If they cannot get the code running by the instructions alone, you have failed.

Conclusion: Make it Super Simple

Why do I promote making your code easy to maintain?  Very simply.  What would that person do if they don’t have anything other than the source? They may have no one to ask because it has been five years and you and the rest of your team has left the company. Or they have to put a fix into production in the next hour and no one is around that would be able to help them.  They have to make it happen. 

If you believe situations similar to these can’t possibly happen, we can still be friends, but I regret to inform you that you are very wrong.  If you think you write perfect code that never breaks, you are also sadly confused. It is a gamble to continue believing that someone could get in and work with your code without verifying it.

The question that you should ask when you develop code is: “How long would it take someone who has never seen your project before to be off and running?”

<a href=”http://technorati.com/claim/b58wqz24ma” rel=”me”>Technorati Profile</a>


One thing I always keep noticing is that people will develop things without even giving a thought to maintenance.  This somehow seems impolite to me.   I suffer from Coder Alzheimer's, which means I can't remember a thing I wrote after not seeing after three weeks. That is why I think about things like maintenance.  I am seeing all new code if I have been away from it for awhile!  Now that is not completely true, but imagine how it may be for ... Read More

GridGain: Starting Every 60 Seconds Worldwide

Keywords: ,

More than 3 years ago I and Dmitriy Setrakyan founded GridGain - open source Java grid computing project, and GridGain Systems around it. We quit our comfortable but frustrating jobs, took a plunge and started working on GridGain in whatever time was left from consulting projects that kept the company alive. As a young company we’ve been through a lot…

More than 3 years ago I and Dmitriy Setrakyan founded GridGain - open source Java grid computing project, and GridGain Systems around it. We quit our comfortable but frustrating jobs, took a plunge and started working on GridGain in whatever time was left from consulting projects that kept the company alive. As a young company we've been through a lot... Read More

Storing BizTalk settings in custom configuration file using Enterprise Library

Keywords: , , , , , , , , ,

Choice of configuration settings storage is an important topic when it comes to enterprise BizTalk application planning. One of the many options is to use regular .Net configuration files. Some prefer this way over the Enterprise SSO database option for reasons of simplicity and familiarity. I wanted to show how it can be done with Microsoft Enterprise Library configuration application block.

In this case Enterprise Library configuration section is placed in the BTNTSvc.exe.config file while application settings are stored in a separate configuration file. The problem here is how do we make EntLib to load required settings file at runtime.  Its done by simple helper class CustomSettings that looks up registry entry for the location and name of the application configuration file and creates FileConfigurationSource with it. The registry entry can be created  by MSI installation package.

The initialization method of this static helper class looks like this (thread synchronization code omited for brevity):

          RegistryKey regKey = null;

          try
          {
             regKey = Registry.LocalMachine.OpenSubKey(@”Software\MyCompany\MyApplication”);
             configurationFile = Path.Combine(
             (string)regKey.GetValue(“ConfigDir”),
             (string)regKey.GetValue(“ConfigFile”));

              ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
              fileMap.ExeConfigFilename = configurationFile;
              configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
              configurationSource = new FileConfigurationSource(configurationFile);

              //- store configPath in the settings
              configuration.AppSettings.Settings.Add(
              new KeyValueConfigurationElement(“configDir”, (string)regKey.GetValue(“ConfigDir”)));
           }
           catch (Exception ex)
           {
              Debug.WriteLine(“Exception while initializing Settings:” + ex.ToString());
              throw ex;
           }
           finally
           {
              if (regKey != null) regKey.Close();
           }

 Then it has method to access properties by name:

        public static string GetValue(string name)
        {
            KeyValueConfigurationElement entry = Configuration.AppSettings.Settings[name];

            if (entry == null)
                throw new ConfigurationErrorsException(“Key ‘” + name + “‘ is not found in the configuration file.”);

            return Configuration.AppSettings.Settings[name].Value;
        }

 Which is used as in:

string propertyValue = CustomSettings.GetValue(“propertyName”);

 


Choice of configuration settings storage is an important topic when it comes to enterprise BizTalk application planning. One of the many options is to use regular .Net configuration files. Some prefer this way over the Enterprise SSO database option for reasons of simplicity and familiarity. I wanted to show how it can be done with Microsoft Enterprise Library configuration application block. In this case Enterprise Library configuration section is placed in the BTNTSvc.exe.config file while application settings are stored in a separate configuration file. The problem here ... Read More

OutSync with proxy servers

Keywords: , , , , ,

imageIf like me you want to try the rather that syncs your contacts (and pictures ) with your outlook contacts, which will then be displayed on your mobile phone, and you are behind a proxy server, then this info is for you…

NOTE: This will work for any .NET application where the developer has not already set it…

Open the [applicationname].config file in the install location and add:

<system.net>
  <defaultProxy useDefaultCredentials=”true”>
    <proxy usesystemdefault=”True” />
  </defaultProxy>
</system.net>

Just above the closing </configuration> tags. This will allow your application to authenticate with a proxy server…

 

Technorati Tags: ,


If like me you want to try the rather groovy sync tool for Outlook that syncs your contacts (and pictures ) with your outlook contacts, which will then be displayed on your mobile phone, and you are behind a proxy server, then this info is for you… NOTE: This will work for any .NET application where the developer has not already set it… Open the [applicationname].config file in the install location and add: <system.net> ... Read More

Windows CE: Reading a String from the Registry

Keywords: , , , , ,
I made a change to a string value in the registry recently. That seemed like a harmless thing to do, didn’t it? But, what I did was make the string longer than it was before, again seemed harmless.  Harmless until some applications started reading the value into arrays with hard coded length, the problems began.
So the following function reads a string from the registry by getting the string length first, then allocating a buffer, then reading the string:
TCHAR *ReadRegString( HKEY RootKey, TCHAR *Path, TCHAR *ValueName )
{
                TCHAR *ValueString = NULL;
                DWORD Result;
                HKEY hKey;
                DWORD NumBytes = 0;
                DWORD Type;
 
                // Open the Registry Key
                Result = RegOpenKeyEx(RootKey, (LPCWSTR)Path, 0, 0, &hKey);
 
                if( ERROR_SUCCESS == Result )
                {
                                // This is a fake read, all it does is fill in NumBytes with the number of
                                // bytes in the string value plus the null character.
                                Result = RegQueryValueEx( hKey, (LPCWSTR)ValueName, NULL, &Type, NULL, &NumBytes );
                                if( NumBytes > 0 )
                                {
                                                // Now we know how big the string is allocate and read it
                                                ValueString = (TCHAR *)malloc( NumBytes );
                                                if( ValueString != NULL )
                                                                Result = RegQueryValueEx( hKey, (LPCWSTR)ValueName, NULL, &Type, (LPBYTE)ValueString, &NumBytes );
                                }
                                RegCloseKey( hKey );
                }
                // Potentially leak the string, it is up to the caller to free the memory
                return ValueString;
}
 
Example call to ReadRegString:
TCHAR *EventName = ReadRegString( HKEY_LOCAL_MACHINE, TEXT(”SYSTEM\\GWE”), TEXT(”ActivityEvent”) );
 


I made a change to a string value in the registry recently. That seemed like a harmless thing to do, didn’t it? But, what I did was make the string longer than it was before, again seemed harmless.  Harmless until some applications started reading the value into arrays with hard coded length, the problems began. So the following function reads a string from the registry by getting the string length first, then allocating a buffer, then reading the string: TCHAR *ReadRegString( HKEY RootKey, TCHAR *Path, TCHAR *ValueName ... Read More

Building Web and Desktop Applications with BlazeDS and AMF

Keywords: , , , , ,

Client/server communication is a key part of today’s RIA architectures. In this article James Ward and Shashank Tiwari dive into Adobe’s open source BlazeDS messaging server. The article describes the benefits of the AMF data format and how to use BlazeDS with a Java based server side application.

Client/server communication is a key part of today's RIA architectures. In this article James Ward and Shashank Tiwari dive into Adobe's open source BlazeDS messaging server. The article describes the benefits of the AMF data format and how to use BlazeDS with a Java based server side application. Read More

Build: Heron’s fountain

Keywords: , , ,

IMG_3224.JPG
This week I am actually going to be making something that does not require electricity. Although, you may be able to fool people into thinking it does. We are going to be making Heron’s fountain out of common household materials. This is a really easy build and would be a perfect project for to build with your kids. Maybe you could even sneak in a lesson on fluid dynamics or perpetual motion?

Heron (Hero) of Alexandria was a mathematician and an inventor. He is well known for his steam engine, the Aeolipile, and many other inventions that use pneumatics. (wikipedia) I am going to try and recreate one of my favorite inventions by Heron, the “Heron Fountain”.

Total cost of build = $2 (you can scavenge the 3 water bottles)

What You need: Supplies
IMG_3187b.JPG

(3) 16.9 FL OZ Water bottles (I used Dasani)
(1) 9″ length of tubing
(1) 11″ length of tubing
(1) 15″ length of tubing
Small amount of clay (Play-Doh)

Note: The tubing is for aquariums and is 3/16″ thin wall rigid tubing. Almost any tubing would work, even flexible, but the rigid makes it really easy. I was able to pick some up at a local pet supply store for about $0.50 per foot.

What you need: Tools and equipment
IMG_3252.JPG

Scissors
Drill (hand or electric powered)
5/32″ drill bit (slightly smaller than the tubing diameter)

Step 1: Make the fountains’ reservoir
IMG_3193b.JPG
Cut (1) of the bottles in half as pictured. Keep the bottom of the bottle, you can use it to fill the fountain when we are all done.

Step 2: Drilling the holes
IMG_3199b.JPG
You are going to need (2) holes in each cap. Start by drilling the (2) holes in (1) cap, use a piece of scrap wood to support the cap.

IMG_3203b.JPG
When you are done with the first cap, use it as a guide to drill (2) holes into the top of the remaining (2) caps. You can place the caps top-to-top when drilling the holes. Now you should have (3) caps, each with (2) holes drilled in about the same location.

Step 3: Drilling the holes Part 2
IMG_3259.JPG
Take one of the caps and use it as a guide to drill (2) holes in the bottom of one of the remaining intact bottles. This will end up being bottle {b} as in the diagram below.

Step 5: Connect the tubing
bottles-md.jpg
Connect the tubing as in the above diagram. All connections should be airtight. If you used the 5/32 drill bit they should be. If not, just add a small amount of clay (Play-Doh) to seal the openings around the tubing. I had to seal the area between bottle {a} . You can see it in the first picture. The other connections didn’t leak and I did not use any clay.

IMG_3212.JPG
Note: Make sure the tubing is at the proper heights in each bottle. These heights are Very Important.

Step 6: Add water and enjoy

Now all you have to do is fill bottle {b} with water and screw the whole system together. To start your fountain, add water to the upper bottle {a}. Enjoy your homemade Heron’s Fountain.

Read more | Permalink | Comments |

Read more articles in Kids |

Digg this!

This week I am actually going to be making something that does not require electricity. Although, you may be able to fool people into thinking it does. We are going to be making Heron's fountain out of common household materials. This is a really easy build and would be a perfect project for to build with your kids. Maybe you could even sneak in a lesson on fluid dynamics or perpetual motion? Heron (Hero) of Alexandria was a mathematician and an inventor. He ... Read More