Heineken is refreshing its supply chain to ensure its beer doesn't reach parts it shouldn't.
Heineken is to trial a tracking system which will tell it exactly where its beer shipments are, even in the middle of the Atlantic. The brewer has deployed the solution to track ten containers full of beer travelling from the UK and the Netherlands to its distribution centre in the US. The project, which it calls "The Beer Living Lab", uses triangulation techniques of both satellites and cellular base stations to locate exactly where the cargo is. The SOA-based architecture will also allow the creation of distributed data sources, rather than Heineken having to run a large central database.
Monday, October 30, 2006
Tuesday, October 03, 2006
Dynamically calling an unmanaged dll from .NET (C#)
I like to keep collecting small snippets of code in my blog, which i know will be useful later on.
Below is the code snippet for "Dynamically calling an unmanaged dll from .NET (C#)" from Jonathans blog on MSDN blogs:
To start and to refresh our memories, let's create a very basic C++ dll that does very little..... your code should resemble the following (check out my previous post for more info on this):
Header file
extern "C" __declspec(dllexport) int MultiplyByTen(int numberToMultiply);
Source code file
#include "DynamicDLLToCall.h"
int MultiplyByTen(int numberToMultiply)
{
int returnValue = numberToMultiply * 10;
return returnValue;
}
As you can probably infer from the function name, an int is passed into this function and it will return the number passed in multiplied by ten. Told you it would be simple.
Now comes the more interesting part, actually calling this dll dynamically from your C# source code. There are two Win32 functions that are going to help us do this:
1) LoadLibrary - returns a handle to the dll in question
2) GetProcAddress - obtain the address of an exported function within the previously loaded dll
The rest is rather simple. We use LoadLibrary and GetProcAddress to get the address of the function within the dll we want to call, and then we use the GetDelegateForFunctionPointer static method within the Marshal class to assign this address to a C# delegate that we define. Take a look at the following C# code:
static class NativeMethods
{
[DllImport("kernel32.dll")]
public static extern IntPtr LoadLibrary(string dllToLoad);
[DllImport("kernel32.dll")]
public static extern IntPtr GetProcAddress(IntPtr hModule, string procedureName);
}
class Program
{
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate int MultiplyByTen(int numberToMultiply);
static void Main(string[] args)
{
IntPtr pDll = NativeMethods.LoadLibrary(@"PathToYourDll.DLL");
//oh dear, error handling here
//if (pDll == IntPtr.Zero)
IntPtr pAddressOfFunctionToCall = NativeMethods.GetProcAddress(pDll, "MultiplyByTen");
//oh dear, error handling here
//if(pAddressOfFunctionToCall == IntPtr.Zero)
MultiplyByTen multiplyByTen = (MultiplyByTen)Marshal.GetDelegateForFunctionPointer(
pAddressOfFunctionToCall,
typeof(MultiplyByTen));
int theResult = multiplyByTen(10);
Console.WriteLine(theResult);
}
}
The only item worthy of note is the UnmanagedFunctionPointer attribute, which was introduced to version 2.0 of the .NET framework,
Below is the code snippet for "Dynamically calling an unmanaged dll from .NET (C#)" from Jonathans blog on MSDN blogs:
To start and to refresh our memories, let's create a very basic C++ dll that does very little..... your code should resemble the following (check out my previous post for more info on this):
Header file
extern "C" __declspec(dllexport) int MultiplyByTen(int numberToMultiply);
Source code file
#include "DynamicDLLToCall.h"
int MultiplyByTen(int numberToMultiply)
{
int returnValue = numberToMultiply * 10;
return returnValue;
}
As you can probably infer from the function name, an int is passed into this function and it will return the number passed in multiplied by ten. Told you it would be simple.
Now comes the more interesting part, actually calling this dll dynamically from your C# source code. There are two Win32 functions that are going to help us do this:
1) LoadLibrary - returns a handle to the dll in question
2) GetProcAddress - obtain the address of an exported function within the previously loaded dll
The rest is rather simple. We use LoadLibrary and GetProcAddress to get the address of the function within the dll we want to call, and then we use the GetDelegateForFunctionPointer static method within the Marshal class to assign this address to a C# delegate that we define. Take a look at the following C# code:
static class NativeMethods
{
[DllImport("kernel32.dll")]
public static extern IntPtr LoadLibrary(string dllToLoad);
[DllImport("kernel32.dll")]
public static extern IntPtr GetProcAddress(IntPtr hModule, string procedureName);
}
class Program
{
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate int MultiplyByTen(int numberToMultiply);
static void Main(string[] args)
{
IntPtr pDll = NativeMethods.LoadLibrary(@"PathToYourDll.DLL");
//oh dear, error handling here
//if (pDll == IntPtr.Zero)
IntPtr pAddressOfFunctionToCall = NativeMethods.GetProcAddress(pDll, "MultiplyByTen");
//oh dear, error handling here
//if(pAddressOfFunctionToCall == IntPtr.Zero)
MultiplyByTen multiplyByTen = (MultiplyByTen)Marshal.GetDelegateForFunctionPointer(
pAddressOfFunctionToCall,
typeof(MultiplyByTen));
int theResult = multiplyByTen(10);
Console.WriteLine(theResult);
}
}
The only item worthy of note is the UnmanagedFunctionPointer attribute, which was introduced to version 2.0 of the .NET framework,
Monday, October 02, 2006
Using Settings in C#
The .NET Framework 2.0 allows to create and access values that are persisted between application execution sessions. These values are called settings. We can use settings by accessing the Properties namespace.
There are two types of settings:
Application Settings
User Settings
Settings have four properties:
Name: The Name property of settings is the name that is used to access the value of the setting at run time.
Type: The Type of the setting is the .NET Framework type that the setting represents. A setting can be of any type. For example, a setting that holds a user preference of color would be a System.Color type.
Scope: The Scope property represents how a setting can be accessed at run time. There are two possible values for the Scope property: Application and User. These will be discussed more in this section.
Value: The Value property represents the value returned when the setting is accessed. The value will be of the type represented by the Type property.
Creating a New Setting at Design Time
You can create a new setting at design time by using the Settings designer. The Settings designer is a familiar grid-style interface that allows you to create new settings and specify properties for those settings. You must specify Name, Type, Scope, and Value for each new setting. Once a setting is created, it can be assessed in code using the mechanisms described later in this article.
To Create a New Setting at Design Time
In Solution Explorer, expand the Properties node of your project.
In Solution Explorer, double-click the .settings file in which you want to add a new setting. The default name for this file is Settings.settings.
In the Settings designer, set the Name, Type, Scope, and Value for your setting. Each row represents a single setting.
Changing the Value of an Existing Setting at Design Time
You can also use the Settings designer to change the value of a pre-existing setting at design time, as described in the following steps:
To Change the Value of an Existing Setting at Design Time
In Solution Explorer, expand the Properties node of your project.
In Solution Explorer, double-click the .settings file in which you want to add a new setting. The default name for this file is Settings.settings.
In the Settings designer, find the setting you want to change and type the new value in the Value column.
Changing the Value of a Setting Between Application Sessions
At times, you might want to change the value of a setting between application sessions after the application has been compiled and deployed. For example, you might want to change a connection string to point to the correct database location. Since design-time tools are not available after the application has been compiled and deployed, you must change the setting value manually in the file.
To Change the Value of a Setting Between Application Sessions
Using Microsoft Notepad or some other text or XML editor, open the.exe.config file associated with your application.
Locate the entry for the setting you want to change. It should look similar to the following example:
This is the setting value
Type a new value for your setting and save the file.
Using Settings at Run Time
Settings are available to the application through code at run time. You can access the value of settings with application scope on a read-only basis, and you can read and write the values of user-scope settings. Settings are available in C# through the Properties namespace.
Reading Settings at Run Time
You can read both application-scope and user-scope settings at run time with the Properties namespace. The Properties namespace exposes all of the default settings for the project by using the Properties.Settings.Default object. When writing code that uses settings, all settings appear in IntelliSense and are strongly typed. Thus, if you have a setting that is of type System.Drawing.Color, for example, you can use it without having to cast it first, as shown in the following example:
this.BackColor = Properties.Settings.Default.myColor;
Saving User Settings at Run Time
Application-scope settings are read only, and can only be changed at design time or by altering the.exe.config file in between application sessions. User-scope settings, however, can be written at run time, just as you would change any property value. The new value persists for the duration of the application session. You can persist changes to user settings between application sessions by calling the Settings.Save method. These settings are saved in the User.config file.
To Write and Persist User Settings at Run Time
Access the user setting and assign it a new value, as shown in the following example:
Properties.Settings.Default.myColor = Color.AliceBlue;
If you want to persist changes to user settings between application sessions, call the Save method, as shown in the following code:
Properties.Settings.Default.Save();
There are two types of settings:
Application Settings
User Settings
Settings have four properties:
Name: The Name property of settings is the name that is used to access the value of the setting at run time.
Type: The Type of the setting is the .NET Framework type that the setting represents. A setting can be of any type. For example, a setting that holds a user preference of color would be a System.Color type.
Scope: The Scope property represents how a setting can be accessed at run time. There are two possible values for the Scope property: Application and User. These will be discussed more in this section.
Value: The Value property represents the value returned when the setting is accessed. The value will be of the type represented by the Type property.
Creating a New Setting at Design Time
You can create a new setting at design time by using the Settings designer. The Settings designer is a familiar grid-style interface that allows you to create new settings and specify properties for those settings. You must specify Name, Type, Scope, and Value for each new setting. Once a setting is created, it can be assessed in code using the mechanisms described later in this article.
To Create a New Setting at Design Time
In Solution Explorer, expand the Properties node of your project.
In Solution Explorer, double-click the .settings file in which you want to add a new setting. The default name for this file is Settings.settings.
In the Settings designer, set the Name, Type, Scope, and Value for your setting. Each row represents a single setting.
Changing the Value of an Existing Setting at Design Time
You can also use the Settings designer to change the value of a pre-existing setting at design time, as described in the following steps:
To Change the Value of an Existing Setting at Design Time
In Solution Explorer, expand the Properties node of your project.
In Solution Explorer, double-click the .settings file in which you want to add a new setting. The default name for this file is Settings.settings.
In the Settings designer, find the setting you want to change and type the new value in the Value column.
Changing the Value of a Setting Between Application Sessions
At times, you might want to change the value of a setting between application sessions after the application has been compiled and deployed. For example, you might want to change a connection string to point to the correct database location. Since design-time tools are not available after the application has been compiled and deployed, you must change the setting value manually in the file.
To Change the Value of a Setting Between Application Sessions
Using Microsoft Notepad or some other text or XML editor, open the
Locate the entry for the setting you want to change. It should look similar to the following example:
Type a new value for your setting and save the file.
Using Settings at Run Time
Settings are available to the application through code at run time. You can access the value of settings with application scope on a read-only basis, and you can read and write the values of user-scope settings. Settings are available in C# through the Properties namespace.
Reading Settings at Run Time
You can read both application-scope and user-scope settings at run time with the Properties namespace. The Properties namespace exposes all of the default settings for the project by using the Properties.Settings.Default object. When writing code that uses settings, all settings appear in IntelliSense and are strongly typed. Thus, if you have a setting that is of type System.Drawing.Color, for example, you can use it without having to cast it first, as shown in the following example:
this.BackColor = Properties.Settings.Default.myColor;
Saving User Settings at Run Time
Application-scope settings are read only, and can only be changed at design time or by altering the
To Write and Persist User Settings at Run Time
Access the user setting and assign it a new value, as shown in the following example:
Properties.Settings.Default.myColor = Color.AliceBlue;
If you want to persist changes to user settings between application sessions, call the Save method, as shown in the following code:
Properties.Settings.Default.Save();
Wednesday, September 20, 2006
Scotland Trip (15/09/2006 - 18/09/2006)
Before I forget let me capture the events and moments:
15: Edinburgh castle,
Hollyrood House, Edinburgh chapel
Authentic Fish and Chips.
16: Old town visit, dads office search, Royal botanical garden, Rosilln village and
chapel(The DaVinci Code Chapel), Authentic scottish beers and excellent food,
nightclub with champs.
17: Muselborough village and beach, John Muir Walk, Dad old house search,
Portobello beach, BenBradley, Champs discussion, Lots of beer.
18: Champs shopping. Mum shopping. Dad calling,I drinking.
15: Edinburgh castle,
Hollyrood House, Edinburgh chapel
Authentic Fish and Chips.
16: Old town visit, dads office search, Royal botanical garden, Rosilln village and
chapel(The DaVinci Code Chapel), Authentic scottish beers and excellent food,
nightclub with champs.
17: Muselborough village and beach, John Muir Walk, Dad old house search,
Portobello beach, BenBradley, Champs discussion, Lots of beer.
18: Champs shopping. Mum shopping. Dad calling,I drinking.
Thursday, August 31, 2006
1 year since we finished our Masters Degree
Well its been exactly a year when we finished our dissertation and thus our Master's degree. I just cant believe that time has gone by so fast. I still clearly remember we all working like mad to meet the deadline. Jamie was the first one to finish his dissertation in the whole of the uni i reckon. Ben was struggling to finish his dissertation as well. I remember in the start of august, he was already considering toher options. Writing the actual dissertation (the report) was actually the hardest part for me. Champs and BaoYuan had finished their dissertation early and left Hull. ioulieta was as usual so stressed!!!! We have come a long way from that. Ankur and Rob Miles were cool as it goes with their personality. Ankur i reckon spent equal time in lab and in "Fuel" in July. I partied a lot during July to Aug mid and watched loads of wimbledon. But yeah finally we all got there. Congrats people.
And best of luck for years to come.
And best of luck for years to come.
Saturday, August 19, 2006
Earn or Learn
Though its a saturday, but i had to go to work due to the huge amount of work left to be done with the deadline approaching.
I was chatting to a friend of mine and he said what am i doing in office on saturday .When people get a job, most of them as far as i know enjoy their work for a few weeks and then it becomes routine job for them. The main purpose of job then is to earn a living and be satisfied.
However as i just finished work i was thinking of the difference between the words "Earn" and "Learn". If any of you did not notice what i mean,
Learn = L + earn.
I also need money, i also want to be really rich but......and yes there is a but here.
Since finishing my Masters Degree last year i have been working as a software developer.I see my work as a learning experience through which i earn, and i dont see it as an income source, where i might learn a bit. i am learning every second of my job. i am exploring new ideas and this gives me immense satisfaction.
I thoroughly enjoy my experience of work. What can be better than getting paid for something you like to do for most of the time of your day.
Thus:
Learn = "Earn through what you love to do"
= Loving the work you are doing + earning.
Another thing which i would love to od and get paid for is travelling. Right now iwant to concentrate on my career as a software developer. However in the future it would be nice if somebody paid me to travel all around the world:).
Even better, a job as a professional software developer where i get to travel a lot and meet new people, see new places. That would be a dream come true job.
I was chatting to a friend of mine and he said what am i doing in office on saturday .When people get a job, most of them as far as i know enjoy their work for a few weeks and then it becomes routine job for them. The main purpose of job then is to earn a living and be satisfied.
However as i just finished work i was thinking of the difference between the words "Earn" and "Learn". If any of you did not notice what i mean,
Learn = L + earn.
I also need money, i also want to be really rich but......and yes there is a but here.
Since finishing my Masters Degree last year i have been working as a software developer.I see my work as a learning experience through which i earn, and i dont see it as an income source, where i might learn a bit. i am learning every second of my job. i am exploring new ideas and this gives me immense satisfaction.
I thoroughly enjoy my experience of work. What can be better than getting paid for something you like to do for most of the time of your day.
Thus:
Learn = "Earn through what you love to do"
= Loving the work you are doing + earning.
Another thing which i would love to od and get paid for is travelling. Right now iwant to concentrate on my career as a software developer. However in the future it would be nice if somebody paid me to travel all around the world:).
Even better, a job as a professional software developer where i get to travel a lot and meet new people, see new places. That would be a dream come true job.
Wednesday, August 16, 2006
Tuesday, August 15, 2006
Passed my driving test
I have passed my practical driving test. Today was my test at the DVLA croydon centre.
Today 15th of August is India's Independence Day. I am missing the Parade in delhi, which iused ot watch on TV.
Came across this quote on TFS team blog:
“Imagination is more important than knowledge. For knowledge is limited to all we now know and understand, while imagination embraces the entire world, and all there ever will be to know and understand.” - Albert Einstein
Today 15th of August is India's Independence Day. I am missing the Parade in delhi, which iused ot watch on TV.
Came across this quote on TFS team blog:
“Imagination is more important than knowledge. For knowledge is limited to all we now know and understand, while imagination embraces the entire world, and all there ever will be to know and understand.” - Albert Einstein
Monday, August 14, 2006
IBM PC turns 25. Incredible history on the way
I know, i am a bit late in posting it..but anyway something to be proud of..
It was a match made in computer heaven.
The May-December marriage of a young company called Microsoft and business powerhouse IBM would change the landscape of offices and homes across the globe.
August 12 (today) is the 25th anniversary of the IBM personal computer launch, a pairing of MS and DOS, Microsoft and the disk operating system.
"MS-DOS moved computer access from a community measured in thousands to one measured in millions
"It was a key transition from the hobbyist and 'geek' environment to business applications".
Several popular home computers existed before the 1981 IBM PC launch. But the regimented business world considered Apple, Commodore, and Radio Shack's Tandy products "toys."
The IBM stamp of approval on a personal computer changed that mentality for good.
"Almost overnight, with IBM introducing the PC, it became OK to use it for real business applications," said Tycho Howle, CEO of nuBridges in Atlanta, a provider of business-to-business services.
Howle remembers with fondness his first desktop PC."In 1981 I had an IBM PC, two-floppy system," Howle said."To give young people these days a comparison: It would take 10 of those floppy disks to be able to hold the music that is on one MP3 song," he said.
A floppy disk is a thin, plastic disk that was coated with a magnetic substance used to store data. Earliest disks were 8 inches wide, more efficient disks shrunk to 5 1/4 inches, then 3 1/2 inches. Unlike a CDs or DVDs of today, the disks were floppy, or flexible.
IBM, the 800 pound gorilla of the business world at the time, flooded trade papers and television with promises that this new device would provide "smoother scheduling, better planning, and greater productivity."
Early '80s status symbol, the first available PCs cost between $1,600 and $6,000. Little about this early version was user, but that has changed considerably over time and they are much cheaper now.
Long live the PC........
It was a match made in computer heaven.
The May-December marriage of a young company called Microsoft and business powerhouse IBM would change the landscape of offices and homes across the globe.
August 12 (today) is the 25th anniversary of the IBM personal computer launch, a pairing of MS and DOS, Microsoft and the disk operating system.
"MS-DOS moved computer access from a community measured in thousands to one measured in millions
"It was a key transition from the hobbyist and 'geek' environment to business applications".
Several popular home computers existed before the 1981 IBM PC launch. But the regimented business world considered Apple, Commodore, and Radio Shack's Tandy products "toys."
The IBM stamp of approval on a personal computer changed that mentality for good.
"Almost overnight, with IBM introducing the PC, it became OK to use it for real business applications," said Tycho Howle, CEO of nuBridges in Atlanta, a provider of business-to-business services.
Howle remembers with fondness his first desktop PC."In 1981 I had an IBM PC, two-floppy system," Howle said."To give young people these days a comparison: It would take 10 of those floppy disks to be able to hold the music that is on one MP3 song," he said.
A floppy disk is a thin, plastic disk that was coated with a magnetic substance used to store data. Earliest disks were 8 inches wide, more efficient disks shrunk to 5 1/4 inches, then 3 1/2 inches. Unlike a CDs or DVDs of today, the disks were floppy, or flexible.
IBM, the 800 pound gorilla of the business world at the time, flooded trade papers and television with promises that this new device would provide "smoother scheduling, better planning, and greater productivity."
Early '80s status symbol, the first available PCs cost between $1,600 and $6,000. Little about this early version was user, but that has changed considerably over time and they are much cheaper now.
Long live the PC........
Windows Live Writer
I just came to know from MSDN blogs that "Windows Live Writer" Beta is available from today 14th August. Windows Live Writer is a desktop application that makes it easier to compose compelling blog posts using Windows Live Spaces or your current blog service.
Teh cool feaure about writer is you can now author your post and know exactly what it will look like before you publish it.Writer makes inserting, customizing, and uploading photos to your blog a snap. You can insert a photo into your post by browsing image thumbnails through the “Insert Picture” dialog or by copying and pasting from a web page.
Teh cool feaure about writer is you can now author your post and know exactly what it will look like before you publish it.Writer makes inserting, customizing, and uploading photos to your blog a snap. You can insert a photo into your post by browsing image thumbnails through the “Insert Picture” dialog or by copying and pasting from a web page.
Thursday, August 10, 2006
Croydon Life
Police looking for human remains are preparing to begin a finger-tip search of the former home of a convicted paedophile in south London - croydon.
Detectives began an investigation after receiving an anonymous letter last year which claimed human remains linked to events 35 years ago were buried there.
Now that is scary..
Detectives began an investigation after receiving an anonymous letter last year which claimed human remains linked to events 35 years ago were buried there.
Now that is scary..
Wednesday, August 09, 2006
Blogging from PDA
Police looking for human remains are preparing to begin a finger-tip search of the former home of a convicted paedophile in south London.Detectives began an investigation after receiving an anonymous letter last year which claimed human remains linked to events 35 years ago were buried there.
Monday, May 22, 2006
Friend Assemblies
I havent been able to blog, because the internet connection at my place is screwed up. The BT line has been disconnected. And i am not allowed to access blogspot at my workplace.
Recently i worked with friend assemblies in .NET framework 2.0. In some cases we need to limit the use of some classes to the assemblies in wihch they are defined. The "internal" keyword in C# allows us to do that. It hides the specification of these classes even when you refer these assemblies in a project.
But in some cases we might need to use these classes in some other assemblies. But on the other hand we do not want to declare these classes as public. here comes the sweet part of the .NET framework. We can use the "InternalsVisibleToAttribute" to specify as to which assemblies can use the internal classes.
The usage would be something like:
[assembly:InternalsVisibleToAttribute("MyFriendAssembly”)]
This attribute when applied to an assembly indicates that all internal types in that assembly would be visible to another assembly, whose name is specified in the attribute constructor.
Recently i worked with friend assemblies in .NET framework 2.0. In some cases we need to limit the use of some classes to the assemblies in wihch they are defined. The "internal" keyword in C# allows us to do that. It hides the specification of these classes even when you refer these assemblies in a project.
But in some cases we might need to use these classes in some other assemblies. But on the other hand we do not want to declare these classes as public. here comes the sweet part of the .NET framework. We can use the "InternalsVisibleToAttribute" to specify as to which assemblies can use the internal classes.
The usage would be something like:
[assembly:InternalsVisibleToAttribute("MyFriendAssembly”)]
This attribute when applied to an assembly indicates that all internal types in that assembly would be visible to another assembly, whose name is specified in the attribute constructor.
Monday, May 15, 2006
GooglePages
Today i came across Google Page Creator.
It is a free online tool that makes it easy for anyone to create and publish web pages in just minutes.
- No technical knowledge required.
Build high-quality web pages without having to learn HTML or use complex software.
- What you see is what you'll get.
Edit your pages right in your browser, seeing exactly how your finished product will look every step along the way.
- Don't worry about hosting.
The web pages will live on your own site at http://yourgmailusername.googlepages.com
And the best part is that you can use the "Edit HTML" link to view the HTML code behind your page and even tweak it futher
Check out my Googlepages.
It is a free online tool that makes it easy for anyone to create and publish web pages in just minutes.
- No technical knowledge required.
Build high-quality web pages without having to learn HTML or use complex software.
- What you see is what you'll get.
Edit your pages right in your browser, seeing exactly how your finished product will look every step along the way.
- Don't worry about hosting.
The web pages will live on your own site at http://yourgmailusername.googlepages.com
And the best part is that you can use the "Edit HTML" link to view the HTML code behind your page and even tweak it futher
Check out my Googlepages.
Sunday, May 14, 2006
.NET vs Java World on Google Trends
Recently, I came across Google Trends. I have been playing with it for a while analysing the various trends.
It just popped in my mind, "why not try google trends to see as to what it reveals for .NET and Java".
The result was bit of a surpirse to me because i thought was .NET was much closer to Java in terms of usage for especially enterprise software development.
It just popped in my mind, "why not try google trends to see as to what it reveals for .NET and Java".
The result was bit of a surpirse to me because i thought was .NET was much closer to Java in terms of usage for especially enterprise software development.
Thursday, May 11, 2006
25 Things I Learned on Google Trends
i came acroos an entry on Micro Persuasion (Steve Rubel's) blog.
To give you a sense of its tremendous power for tapping into the world psyche, here are 25 things I learned on Google Trends.
1) Almost all of the ten biggest US markets for MySpace are on the West Coast
2) There's more interest in Bluetooth than in Wifi
3) PR is starting to come close to catching advertising. AdAge still bests PR Week
4) David Hasselhoff's popularity in Germany is declining
5) Jerry Lewis's popularity in France is rising
6) Blackberry is widening its lead over the Treo
7) Zacharias Moussaoui finally beat OJ Simpson in searches
8) Hockey is starting to surpass baseball in popularity, but they fall way behind football (no matter which way it is defined)
9) New York still tops LA!
10) The Kryptonite Lock got more PR from the blog blow-up than any other event during the past two years
11) TV is kicking the movies butt
12) Dogs are by far killing all other pets while cats and fish battle for second place
13) Democrats vs. Republicans? Yup, they're neck and neck and on my screen red and blue!
14) YouTube is huge in the Philippines. Call it the Mike Abundo effect.
15) Blogs have caught up to newspapers. Boing Boing and Gizmodo are close to catching the WSJ
16) The beach is more popular than the mountains
17) Wikipedia is huge in Eastern Europe and it started to lead Britannica, Encarta and Webster's in 2004
18) Digg is still way behind CNET but it caught up to Slashdot. MySpace speed ahead of AOL last year
19) Interest in blogs and RSS is much higher than in podcasting and wikis
20) Flickr is the king of tagging, followed by del.icio.us and furl
21) Web 2.0 is huge in Korea - even bigger than in San Francisco
22) Elvis and The Beatles are in a dead heat
23) Word is more popular than any other Office app. Outlook and Excel are in a tie, followed by Powerpoint.
24) Bill Gates is slaughtering Steve Jobs in searches
25) Google is bigger than God?
To give you a sense of its tremendous power for tapping into the world psyche, here are 25 things I learned on Google Trends.
1) Almost all of the ten biggest US markets for MySpace are on the West Coast
2) There's more interest in Bluetooth than in Wifi
3) PR is starting to come close to catching advertising. AdAge still bests PR Week
4) David Hasselhoff's popularity in Germany is declining
5) Jerry Lewis's popularity in France is rising
6) Blackberry is widening its lead over the Treo
7) Zacharias Moussaoui finally beat OJ Simpson in searches
8) Hockey is starting to surpass baseball in popularity, but they fall way behind football (no matter which way it is defined)
9) New York still tops LA!
10) The Kryptonite Lock got more PR from the blog blow-up than any other event during the past two years
11) TV is kicking the movies butt
12) Dogs are by far killing all other pets while cats and fish battle for second place
13) Democrats vs. Republicans? Yup, they're neck and neck and on my screen red and blue!
14) YouTube is huge in the Philippines. Call it the Mike Abundo effect.
15) Blogs have caught up to newspapers. Boing Boing and Gizmodo are close to catching the WSJ
16) The beach is more popular than the mountains
17) Wikipedia is huge in Eastern Europe and it started to lead Britannica, Encarta and Webster's in 2004
18) Digg is still way behind CNET but it caught up to Slashdot. MySpace speed ahead of AOL last year
19) Interest in blogs and RSS is much higher than in podcasting and wikis
20) Flickr is the king of tagging, followed by del.icio.us and furl
21) Web 2.0 is huge in Korea - even bigger than in San Francisco
22) Elvis and The Beatles are in a dead heat
23) Word is more popular than any other Office app. Outlook and Excel are in a tie, followed by Powerpoint.
24) Bill Gates is slaughtering Steve Jobs in searches
25) Google is bigger than God?
Monday, May 08, 2006
Visual Studio Add-Ins Every Developer Should Download Now
While going through previous MSDN magazines, I came across a list of must-have tools for a developer using Visual Studio.
Ten Essential Tools
Ten Essential Tools
Sunday, May 07, 2006
It would be a day to remember for lots of people.
Spurs & Arsenal face Euro destiny - It is probably the biggest game of Martin Jol's managerial career. Manager Arsene Wenger believes West Ham could do Arsenal a favour
The final salute - Arsenal will end 93 years at Highbury with a closing ceremony after todays game against Wigan Athletic. if you don't have a ticket for the game you can watch a live stream of the post-match celebrations on Arsenal TV Online.
Alonso beats Schumi to Euro pole - World champion Fernando Alonso won a battle with Michael Schumacher for pole position at the European Grand Prix. But Schumacher is anticipating an exciting race in front of his home fans. Best of luck schumi.
The final salute - Arsenal will end 93 years at Highbury with a closing ceremony after todays game against Wigan Athletic. if you don't have a ticket for the game you can watch a live stream of the post-match celebrations on Arsenal TV Online.
Alonso beats Schumi to Euro pole - World champion Fernando Alonso won a battle with Michael Schumacher for pole position at the European Grand Prix. But Schumacher is anticipating an exciting race in front of his home fans. Best of luck schumi.
Saturday, May 06, 2006
Pattern for resolving Association classes many - many relationship
On Thursday, i had one of the most satisfying coding expereinces since i started working. Not many people have heard of IAA , but i tell you it is becoming the de-facto standard for Architecting the Insurance Applications.
My designer gave me the class diagram and sequence diagram for implementing a particular part of Payment use case. There was a situation where we had a many to many assosciation relationship between two classes Payment and PaymentDue. These two classes are derived from an abstract base class called FinancialTransaction.
Now we had to establish the relationship between each payment made again a particular paymentdue. Thus a paymentdue can have multiple payments associated with it and also a payment can have multiple payments associated with it in case of Direct Debit transactions. So in orderto uniquely identify each payments association with a paymentdue, i created a link entity called financial transaction relationship and represented it as a class with attributes as amount and settlement date. In financial transaction class i had two lists as attributes of type financial transaction relationship called relatedTpFinancialTransaction and relatedFrom FinancialTransaction. Thus i was able to attach each unique payment against its corresponding paymentdue and vice versa.
My designer gave me the class diagram and sequence diagram for implementing a particular part of Payment use case. There was a situation where we had a many to many assosciation relationship between two classes Payment and PaymentDue. These two classes are derived from an abstract base class called FinancialTransaction.
Now we had to establish the relationship between each payment made again a particular paymentdue. Thus a paymentdue can have multiple payments associated with it and also a payment can have multiple payments associated with it in case of Direct Debit transactions. So in orderto uniquely identify each payments association with a paymentdue, i created a link entity called financial transaction relationship and represented it as a class with attributes as amount and settlement date. In financial transaction class i had two lists as attributes of type financial transaction relationship called relatedTpFinancialTransaction and relatedFrom FinancialTransaction. Thus i was able to attach each unique payment against its corresponding paymentdue and vice versa.
Wednesday, May 03, 2006
Subscribe to:
Posts (Atom)
