Raba - Defend your code RSS 2.0
# Monday, April 14, 2008

Almost a week after tech-ed but It's better late than never.
Very early this morning we start our way to Eilat, the gang of four I called it, Gabbi Soler (aka. MC. Soler), Doron Yaakobi, Yoav Michaeli and I.

     Night before TechEd                   Doron at the morning of The first day

This 5 hours were tremendous, sunny day, cool partners and great subjects for talking, we argued almost about everything, the only thing we agreed about is that we are not agree about anything. Here are some of the subjects for debates:

  • Design using UML VS. Test driven Design Vs. Word-API-design
  • SOA as a one-entrance-point to (varying) many applications Vs. One Big Application
  • Project management - what are the management differences between a small project to a large(huge) one - from  scrum-lovers point of view

The next 3-days are going to be a great fun, as a beginning enjoy the view:

                            The Beauty of Israel #1 - on our way to Eilat

                                 The Beauty of Israel #2 - Still on our way to Eilat...

After almost 5 hours of driving (by Yoav) we finally got to Eilat, at the registration point we got a laptop-bag as a welcome-gift and we went to the opening plenum.
Than we finally start learning, here are the 3 lectures I chose to be at for my first day:

Odyssey in SOA - A Voyage through (by Manu Cohen-Yashar)
Manu explained about the SOA using the MS Tools around us, there are plenty of them and I am sure that such lecture is a great start for the SOA & S+S 3-days-session.
Some of the buzz that were thrown out there are: using ESB for Dynamic routing instead of coding that solution by yourself, I've heard for the first time about ISB - Internet Service bus and Oslo as MS-new-to-come solution. Manu also demonstrate a cool tool by AmberPoint here are some of their products: SOA Monitoring, AmberPoint Express.
Those products can show you everything you would like to know about your services even time of calling, number of errors and flow of calls of each message, this tools can solve many problems when using WF & WCF together. anyway I like the lecture, it was a good start for me cause we are start using WCF & SOA in more places at our systems. anyway there were samples that I wanted to see its code or WF Creations it could be even clearer than its explanations.
My grade to Manu's lecture: 8/10.


SOAP\WS* and REST (by David Chappell)
David Chappell had a great show at teched He is a great presenter and he knows how to take some boring subject and make it interesting.
The lecture was talked about the two approaches for Web-Services, the WS* approach and the Rest API. When using WCF you are using, in generally, the WS* approach, with this approach we can choose to use the Reliability, Transactions, Policy etc., but we never asked whether we really need all this stuff in our Web-Services? If your answer is not, so why won't we decrease the size of the request and the response and have something more human-readable such as: REST, (you can read more here).
You can use the simply URI and HTTP methods (Get, Post, Delete etc.) and get back a simple XML, RSS, Json etc. there is no need to send or receive Soap Messages.
In WCF you can easily use the WebGet, WebInvoke, and the ResponseFormat property. I Recommend you to search for the lecture presentation, I would post here link when I'll find it, anyway this is what he said as a conclusion: Rest - can be a good  choice for exposing data over web services, SOAP - can be a good choice for exposing logic\operation.

David Chappell
                      David Chappell in Action - Explaining its lecture agenda.

My grade to David's lecture is 10/10, maybe this is because of the accent-charm but it is a must lecture for those who want to learn about the REST and the WCF connectivity.


SQL Server 2008 - what's new in Analysis services
I believe in knowledge, I also believe in learning more tools\products\architecture, so I went to this lecture from the BI session, after half an hour I've found this boring while the presenters only compare between the 2005 to the 2008 version, so I can't even give a short description from this one.

        This is me picturing myself, before the cocktail party (or maybe after...)

After this lecture we went to the cocktail party where I first found Oren Ellenbogen and Aviel. I really missed Oren and it was great to see him and lots fun with them both.

More on the second day at my next posts.

Monday, April 14, 2008 7:51:47 PM (GMT Daylight Time, UTC+01:00)  #    Comments [0] - Trackback
.Net 2.0 | SQL Server 2005 | WCF

# Monday, February 11, 2008

We are using the ArcGis Explorer as our 3d-Browser, and we would like to create a task.config file for each task. You can read more at my last post about Load config file dynamically (here).

Why this Architecture good for us?
Every one can install its explorer on his computer without any problem, we would like to add our own Task-Specific configurations for example: server-names to connect to, task-screen-size, links to web sites etc.
first, such details you cannot be save to the AGX-installation directory because it already installed. second, we would like to send them again and again every time the task will be updated and downloaded.

Any way, after reading this we still have two questions to answer:

1) how to get to the tasks directory
2) how to find our specific task

The answers for those questions are pretty simple:
1) To get to the task directory you should use this parameters:

   1:  Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\ESRI\ArcGIS Explorer\Tasks";

This answer will solve you the "how to found the tasks directory programmatically" but you'll still have to find the specific task directory that is interesting you.
Anyway, this is good but not good enough. I would like the E2 API to give me its Environment parameters and not to force me to code it by myself. It smell like something that can be change... and I'll be glad if the people at the ArcGis Explorer will create something like: public static class E2Environemnt which will implement such property. For now: we implement our own Environment extensions.

2) To Find the specific task you should dig the black box of E2 and you will find this cool factory:

   1:  ESRI.ArcGIS.E2API.E2TaskFactory factory = new ESRI.ArcGIS.E2API.E2TaskFactory();
   2:  string taskDirectoryName  = factory.GetTaskSubfolderNameFromAssemblyName(currentTask); 

So What's the catch I've asked? This is an internal implementation, ESRI don't like you if you'll use it... (you can read more about my question in the AGX forum). And I will ask just one simple question, why?! why not to make it internal or even private class. why we should read it at the XML comments?!

And here is my preferred solution (as Rob answered in the ArcGis Explorer forum), it make the job for me right now and it is the simple way to do it:

   1:  System.Reflection.Assembly.GetExecutingAssembly().Location;


Monday, February 11, 2008 6:10:38 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] - Trackback
.Net 2.0 | GIS | AGX | Software Development

There are time you would like to load your configuration data from a specific config file or maybe even from the config file but not from the main one, I'll explain it using an example from the real world (last week refactoring).
We have many client which run the ArcGis Explorer (AGX) client (Geographic application like Google Earth), this client can be installed on each and every client, and it has its own configuration files. Within our team we write tasks that running on that AGX. while opening the application it will download to your profile directory the relevant DLL's for running those tasks. but hey those DLL's will be in a separate directory, neither in the GAC nor in the AGX executable directory. You can find many examples for such scenarios.

Here you can see the two different directories: one for the E2.exe and its config file, and the specific task DLL's and its config file (Sample.dll.config)

All we wanted to make is a Task specific configuration. so we would like it to work on every other task we will create.
First you might know this bunch of code, this will help you load the Sample.dll.config file from the wanted directory (The Task directory).

   1:  // Get the application configuration file path.
   2:  string exeFilePath = @"C:\ShaniData\Projects2008\ConfigHandlerDemo\Sample.dll.config"; 
   4:  // Map to the application configuration file.
   5:  ExeConfigurationFileMap configFile = new ExeConfigurationFileMap();
   6:  configFile.ExeConfigFilename = exeFilePath;
   7:  System.Configuration.Configuration config =
   8:  ConfigurationManager.OpenMappedExeConfiguration(configFile,
   9:  ConfigurationUserLevel.None);
  11:  ConfigurationSection sec = config.GetSection("MailManagerConfiguration");

In this situation we should use the .Net default ConfigurationSection implementations (for example: the ApplicationSettingsSection). Those of you who think of using the DictionarySectionHandler or NameValueSectionHandler will found it returning the DefaultSection instead.

Pay also attention that your code is running from the AGX installation directory so if you'll write your own section it won't work unless it was installed on the given computer (in GAC or in the AGX installation directory).

Monday, February 11, 2008 3:38:38 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] - Trackback
.Net 2.0 | GIS | AGX

# Monday, November 12, 2007

I found out that while using the VS2008 I can't access the Page method ProcessRequest.

Watch This image...

Isn't it strange? {while building -> it will succeed}.
I might admit that it took me some time (at home) to figure it out, after all at work I remember that it has the auto complete (I think that it work there because of the ReSharper).

So I made my "Go To Definition" operation and found this out:
// Summary:
// Sets the intrinsics of the System.Web.UI.Page, such as the System.Web.UI.Page.Context,
// System.Web.UI.Page.Request, System.Web.UI.Page.Response, and System.Web.UI.Page.Application
// properties.
// Parameters:
// context:
// An System.Web.HttpContext object that provides references to the intrinsic
// server objects (for example, System.Web.HttpContext.Request, System.Web.HttpContext.Response,
// and System.Web.HttpContext.Session) used to service HTTP requests.
public virtual void ProcessRequest(HttpContext context);


Monday, November 12, 2007 9:51:13 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] - Trackback
.Net 2.0

# Saturday, August 18, 2007

I thought about the time we all spend on reading some well known patterns. I found this strange reading again and again the same logic. We all know the pattern but we doing it to be sure we use all the best practices.

Inspired by the book: Head First - Design Patterns, I rewrite the two basic patterns of Strategy and Observer. and create a snippets for your own use. so next time you won't need to get to Google it up.

Here are the snippets, for your own use: (right click & download)

More to come on the next posts.

Remark: There could be a lot of variation for those patterns, those I wrote here were taken as a combination of the books samples and a few best practices I found out.
Saturday, August 18, 2007 5:33:24 PM (GMT Daylight Time, UTC+01:00)  #    Comments [3] - Trackback
.Net 2.0 | Design Patterns

# Friday, July 13, 2007

I think that ESRI made a huge jump in the last 3 years from the ArcIms Server (and the weird AXLs files) toward using almost the same API above the MXD files and Arc-Objects architecture.
Don't get me wrong they still have a lot to do, but hey they are doing it in the right direction.

I wanna show something that never happened before:
Next version (9.3) in brief
Microsoft API & ESRI GIS
More on the next version
and here is the real article about the next releases.

Some Highlight for the 9.3:

  • Windows vista capabilities
  • Working with Microsoft about adding virtual earth controls to the API.
  • When? a the first quarter of 2008! (good to know)

Something still missing:

  • Readability and Usability testing the Arc-Objects API.
  • WPF support, I've read about OpenGL API... in the next releases.

ESRI letting us know about the next releases, they still don't let us know everything but it is a something we should use.
Moreover, they even made a good direction while working with Microsoft.


Friday, July 13, 2007 9:19:30 AM (GMT Daylight Time, UTC+01:00)  #    Comments [0] - Trackback
.Net 2.0 | GIS | Software Development

# Wednesday, May 23, 2007

Last week we launch our new products, after three months of intensive develop, we finished and gave our evaluation version to our customers.

Our product based on the ArcGis Server 9.2 of ESRI, based on dotnet Framework and using WCF Capabilities for performing intranet Service Oriented Architecture.
I should admit that this buzz-words works, I am not sure why and I can't tell how simple is to implement it, but every manager\team-leader\programmer that heard it has a stupid smile on his face, "Hhaaaaaaa so we can use it too?" yep, this was our intention, write it once, use it everywhere.

One more thing on my mind, our complicated server architecture include lots of business-geographic logic, but it worth nothing, cause managers cannot estimate the time you spent on writing your inner algorithm.
Here are some example:

  • We published a coordinate transformer service for everyone usage
  • We implement a logic for retrieving\querying maps from our server (imagine a clothing-catalog now transform your thoughts to maps-catalog)
  • We can also export Rasters from our DB to every customer
  • And we have more other server side stuff that we spent a lot of time on it, but the real people to worth it will probably be the other programmers\team-leaders on the near by office.

Lets take a typical manager\customer, try to explain him all this stuff,
It will sound like this:
Me: We implement a great server side logic, every one in our company could use this it will save the other teams days/months/years.
Customer(thinking): he spending my time and money on other teams\projects?!
Customer(saying): what can I see from it right now?
Manager(saying): Yes, show him something, give him to play with this new baby.
Me: Hmm, no. see, now you can't do a thing but in the near future ...
Customer(hearing): bla bla bla... [feeling angry]
Manager(thinking): How do I hired this stupid

This reactions can vary from one to another, but at the end point, customer can only understand things we sees.
Don't try to sell them server side capabilities, and it is a cool feature that everyone can use it, but you should know what every one need and want to get and you should give it to him.

Here are my tips:

  1. Programmers & Team-leaders - we always wanted to do a generic things, cool things and other stuff, so we could smile on our way home, (for example: code WPF on GIS Engines using the DLinq underneath all this while writing coast-to-coast unit test using our new mock object with those cool new TFS features for nightly build&running those tests) - do not give up on those features, it will make you happy after all, but use them wisely.
  2. Customers - they have a business logic to catch, we should understand their needs and give them something to play with, not just Doom/Fifa like to play with , we should listen, ask interact and understand what will make them smile when this product will ship.
  3. Managers - wants their customers happy and they also want something to play with, something to show their managers and other partners\customers to bring more money, listen them too, try to understand what can help them bring more money.
  4. Probably if you will listen carefully you could find a good point at the middle when both the customers & managers would be happy, now start thinking what can help you perform those dreams come through,

How do we did this?
I should admit that we do it unintentionally, but it works just great, We used the new
AGX(350 build), it gives us a great UI almost for free, why I am saying unintentionally? because while sitting with the customers (long time ago) we talked about UI and Google-Earth-like, This tool is a beta but probably the worth beta in the world, why? because the customers want it, because it makes the customer-friends happy and when the smile we can blow his chest up and smile every time he plays with it.
about the managers? they can do this too, their customers happy, the project in time, you also gave a great buzz-word the always like to say.
For my team? you should ask them, but for me, I am happy because they are, we use the best technology in the world and keep doing cool things. so why not.
This simple customer-driven technic (you can also call it Agile :) gave our team a lot of time\space to implement our server side code\architecture for further usage of other teams.

One more tip (including example):
For each module you write\design on the server try to give something cool that every one can see. (think about a customer-driven name for this module)
Think about the SOA-team that is doing the hard work which no one can appreciate. Show the managers something, do it simple, with minimum time, just do it COOL, well-designed. try it to get to their business-logic.
For example:  If they need to travel around the world and you create a great logic of minimal distance (shortest path), implement it on a simple map, you would probably do this for your own experiments so just publish it so every one could see this.

Enjoy, Relax, Freedom.

Wednesday, May 23, 2007 12:31:20 PM (GMT Daylight Time, UTC+01:00)  #    Comments [2] - Trackback
.Net 2.0 | GIS | Life | WinFX

# Sunday, April 08, 2007

We are using the Team Foundation Server and we start using the Code-Analysis in our build process.
Migrate Code-Analysis: this option migrate a predefined Code-Analysis rules, so the team-leader can create a template Code-Analysis rules (from now on will be called: Team Code-Analysis) each programmer should click the Migrate Code-Analysis on his solution, (the result on the local solution will be called: Programmer Code-Analysis).

From MSDN: "The ability to migrate allows you to stay synchronized with the settings on the server.".

My co-workers told me that even when we create an empty Team Code-Analysis they still get annoying warnings for Security Rules, Usage Rules and more rules that I didn't turned on. After playing on and off with our solutions I found out that the migration will save the most strict rules.
for example:
 Team Code-Analysis: only Naming Rules
 Programmer Code-Analysis: Usage Rules
 At the end: the solution will have them both.

This all not so bad, the real problem starts when I changed the Team Code-Analysis templates:
We start the project with full rules, but realize very quickly that we cannot have them all, so we turned off most of them, and today we have only the Naming Rules.
But the solution itself: still holds the strict rules, so it will hold them all.

I am pretty sure that such behavior is by design, but I think that this one is not the best choice. why won't you ask me what I want to do with my migration...

One more tip:
If you have issues like this, it is not a great fun to tell all you programmers\Co-Workers to turn off the unwanted rules (each solution * each project).
The pragmatic approach: Those configuration will be saved locally under your BIN directory inside a file named: AssemblyName.dll.CodeAnalysisLog.xml, so all you should do is to make a sample solution and sent it to everyone, including a simple batch with xcopy to the right folders.


Sunday, April 08, 2007 1:17:17 AM (GMT Daylight Time, UTC+01:00)  #    Comments [0] - Trackback
.Net 2.0 | Team Foundation Server

We created a bunch of DLLs which we would like to share between different solutions on our computers. We thought that gacutil.exe all alone is enough, probably not.
When we tried to find the file under the .NET tab - we couldn't find it, but the it was registered to the GAC.

I will start by showing some ladybugs:

Those ladybugs help me get better understanding of this issue.

I searched a little bit and found out two ways to resolve this problem:

  • The first solution is to put a copy of your DLLs in the VS IDE Directory (C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727).
  • The second solution is to create a sub key under: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NET\AssemblyFolders] and insert the real directory path to its value.

For me I prefer the second idea, this look more organized, and you can get better management of your DLLs.

After you will make one of those you could simply find the Assembly in your "add reference -> .NET tab.".

Sunday, April 08, 2007 12:39:00 AM (GMT Daylight Time, UTC+01:00)  #    Comments [0] - Trackback
.Net 2.0

# Saturday, March 03, 2007

Last Thursday a good friend of mine, Shimon Krokhmal, made a great presentation about session hijacking.
People asked me: What did he do that make this lecture so special?
So I tell you:

  • It was well organized from the global idea to prevention.
  • I liked the samples - which where recorded prior to the lecture, which let him the ability to show us the best scenarios.
  • I learnt few tricks which I didn't know before, this is what I am looking for in a lectures.

Pay him a  visit.

Saturday, March 03, 2007 6:04:18 PM (GMT Standard Time, UTC+00:00)  #    Comments [2] - Trackback
.Net | .Net 2.0 | Life | Software Development

# Saturday, February 24, 2007
We are developing a new application over the AGX API. ESRI give us a small and powerless API, which you must use this default window with this default images and menus. But we would like to change those capabilities...
Saturday, February 24, 2007 11:26:29 AM (GMT Standard Time, UTC+00:00)  #    Comments [0] - Trackback
.Net 2.0 | AGX | Software Development

# Sunday, February 18, 2007

Hi, so this is my first step in the TDD world, First read "TDD: from beginner to pro" introduction.

I Had to write a decision tree algorithm which has a special format (SVMLight format). The algorithm should run on this data and create the tree. I will focus on the SVMLightVector class.

I should also add that my examples for this session would be taken from the world of text mining.
our samples would be documents and we should classify each document to its subject.
for example if we hold a document D1 (bunch of words separated by spaces), the decision tree would help us to decide whether this document (D1) is a sport article or finance.

the SVMLightVector class holds:

  • Features - for example if we hold a document each word is a feature.
  • Classification - the subject of the features.

so I wrote this code, or if I'll be TDD-ly Correct: attend to write this code:

public class SVMLightVector
   private IList<string> m_classifications;
   public IList<string> Classifications
      get { return m_classifications; }
      set { m_classifications = value; }

   private IDictionary<string, long> m_features;
   public IDictionary<string, long> Features
      get { return m_features; }
      set { m_features = value; }

   public SVMLightVector()
      // do nothing.

   public SVMLightVector(string svmLightFormat)
      Classifications = new List<string>();
      Features = new Dictionary<string, long>();

So I thought to myself... Testing properties? isn't it wasteful? so I decided to stop wasting my time and start coding.
So why do I think it is good to right such tests:

  • because that this is what I read in all TDD books, test everything, do not have even one line not tested...
  • why not?! it is simpleasy (simple&easy)....
  • also, I must admit that I found it useful to write those tests for properties, how many times it happens that you copy&paste&change one property to another one, instead of using the snippet, this trick can cause strange bugs, believe me.

so here are my tests:

public void FeaturesProperty_SetProperty_GetTheSame()
   IList<string> classifications = new List<string>();

   IList<string> expectedClassifications = new List<string>();

   SVMLightVector vector = new SVMLightVector();
   vector.Classifications = classifications;

   //Assert.AreEqual<IList<string>>(expectedClassifications, vector.Classifications);
   CollectionAssert.AreEqual((IList)expectedClassifications, (IList)vector.Classifications);

public void FeaturesProperty_SetPropertyToWrongClass_GetDifferentClass()
   IList<string> classifications = new List<string>();

   IList<string> expectedClassifications = new List<string>();

   SVMLightVector vector = new SVMLightVector();
   vector.Classifications = classifications;

   //Assert.AreNotEqual<IList<string>>(expectedClassifications, vector.Classifications);
   CollectionAssert.AreNotEqual((IList)expectedClassifications, (IList)vector.Classifications);

Simple isn't it?
You can see my first Test-Bug. I tried to use the Assert.AreEqual<> which is not what I needed, because this one compares objects.
but I easily found this: CollectionAssert.

One Question to myself:

  • Why it(CollectionAssert) doen't use generics?!

Good night for now.

I should thanks to two people that don't even know that I've learned from them a lot.
1) Roy Osherove - I've been reading his blog and using his standards of naming test methods and some more standards.
2) Oren Ellenbogen - Which I read his code and start learning this stuff from their.
Sunday, February 18, 2007 1:06:37 AM (GMT Standard Time, UTC+00:00)  #    Comments [0] - Trackback
.Net 2.0 | TDD

# Saturday, February 17, 2007

Hi, This week I will give you a closer look to my daily coding project.

My project is an exercise in machine learning lecture.
The project itself not really matter, I would like to use it to learn some new stuff and have a lot of fun.

I must admit that I have some challenges in the next few days:

  1. Time is running out and I am not one of those that have spare time to code at home.
  2. ML - I don't understand this stuff.
  3. TDD - I code some samples but not a real project.

I hope it will be useful for some other readers.

Saturday, February 17, 2007 10:35:54 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] - Trackback
.Net 2.0 | TDD

# Saturday, November 11, 2006

At work I have two computers, one with VS2003 (the older one), and on the other one I've installed VS2005, they both share the same user-profile (network profile, I guess).

When building my solution I got this warning:
   CS1668: Invalid search path 'C:\Program Files\Microsoft Visual Studio\VC98\mfc\lib'
   specified in 'LIB Environment Variable' -- 'the system cannot find the file specified.'

This warning has occurred on each project build.

My first step was to try finding the path, which of course wasn't there.
My next step was to search the Environment variables and there it was the LIB variable was pointing on the given path.

As a conclusion, the VS2005 try to load the LIB variables at each build operation, and cannot find it.
Just delete the unrecognized paths from the LIB and your VS2005 will stop showing annoying warnings.

Moreover, this is a 1-0 to the VS2005, this is a good example for descriptive error.

* I've heard that this problem happen for others when installing the VS2005 on a computer with VS2003 that has been deleted.

Saturday, November 11, 2006 5:07:56 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] - Trackback
.Net | .Net 2.0 | Software Development

# Monday, September 04, 2006

For the next post I'll split our world into two parts:
Architect - the one who creates those guidelines
Programmers - those who get the guidelines and should follow the directions.

Tools Vocabulary:

  • GAX - Guidance Automation Extension:
    This Part of installation should be installed on all your programmers' stations, this installation is working as a run-time environment on your computer. Once you installed the GAX you can download tons of guidance installers (MSI\Setup.exe), you can find those on the net or ask your architect to create some for you(read GAT bullet for further info).
  • GAT - Guidance Automation Toolkit:
    This part of the installation will be used by the Architect (The one who writes those guidelines).
    After installing the GAT, you can insert your VS2005 and create a new solution : go to Guidance package and see your new sample packages.

Here are your first steps in the GAT world:
(From now on (this post, only) I am the Architect and you are my enthusiastic-gifted-lovely programmers).

  1. Download the GAX,  run the MSI, in this point there is no visible difference in your VS2005. 
  2. Download my sample project: GatLectures.Lec1Setup.msi (592.00KB) and run the installer, this sample project creates a sample solution. In this solution you can find more options on your context menu (Fig1), you can also see the new snippets(Fig 3 & Fig 4) I've inserted.
    Here are some screen shots samples:

Create Customized class
Fig 1. Add Your custom made class, instead of copy&paste from others class.

         Custom made property screen
Fig 2. Custom made screen for inserting the class parameters and generating the class data.


Projects snippets
Fig 3. Choose your current snippets by moving between the existing projects


Your Project Snippets
Fig 4. I've added two snippets samples, and you (the programmer) can use it without installing 
        anything else. (all programmers will use the same snippets in the whole project)

        Stop Here, Please try those two steps by yourself!

        After you've finished playing with this package yourself you can simply remove the package by going 
        to your: Control Panel -> add/remove programs -> remove the GatLectures.Lec1Setup.

  1. Now you can play the architect role yourself:
    * Step 1 - Download the GAT and install it.
    * Step 2 - Open your VS2005
    * Step 3 - Open a new project -> Guidance Packages, 
                   here you can see the Guidance Package Development.
    If your fingers are dancing on the keyboard, like mine were in this installation, you can try this out or you can wait a little bit.
    On my next lectures I'll give a full explanation on how to do this right.

The First two steps will be a common behavior for programmers, the third step will be done by the architect or the guidelines creator.

* Special thanks to Gil for assisting me in the programmer's side (phase 1 and 2 of the installation & the screenshots).

* I would be glad to receive any question\remarks either by comment or by mail, it will help me understand your point of view and where my explanations are insufficient.
* If you want to see something else (either simpler or complicated) just send me a comment or mail.
Monday, September 04, 2006 12:20:22 AM (GMT Daylight Time, UTC+01:00)  #    Comments [0] - Trackback
.Net 2.0 | Guidance Automation Toolkit

# Friday, August 25, 2006

Gat is an acronym for Guidance Automation Toolkit, this name is a self descriptive.
The first big example I can think about GAT usage is for all the big guidance docs in our office, every programmer wrote at least one guidance document.

For example, document that holds your team standards, such as: all of our web-pages will inherit from MyTeamMasterPage.
For example, in my team we always open new web-page which inherit from the same page, which holds some helper properties.
Another example is in our Dal & BO which both sitting in COM+ they both inherit from the same class and implement the same interfaces and so on.

This guidance docs are pretty good, because they force the same standards between the team members, but the big problem that new programmers will need more time before they could learn and use all those specific standards, and also this is a waste of time for the programmer.
When we change those standards we should learn everyone those new standards and it take some time to get used to this new standards.

The Gat is giving you whole new world to automate this process and to stop the monkey copy-paste.

For example instead of adding new empty WebForm.aspx you can cause your programmers to add the special MyTeamWebForm.aspx which holds inside the logical stuff we describe before.

I know that some of you might mumble to yourself: Merlin did the same or I wrote such Add-ins, but it is more powerful than you can think about it right now, so stay tuned for the next days I'll post here my tutorial for the Gat newbie.

Friday, August 25, 2006 9:13:40 PM (GMT Daylight Time, UTC+01:00)  #    Comments [0] - Trackback
.Net 2.0 | Guidance Automation Toolkit

# Saturday, July 08, 2006

Last week my good friend (and also team-mate :) Doron (aka Control-Master), found strange behavior at the DataGrid Component (.Net 1.1). While playing DataGrid he suddenly see that after postbacks the Grid data disappears (looks like we don't use view state while we actually do). The first thing was the view state of course which looks fine, after a deep dive into his code he found out that he has some code that happens before the Load method which access the DataGrid Items property, causes the DataGrid to lose its Data.

I take this code step ahead while checking this functionality with the .Net 2.0 GridView, which does not have Items property, instead it uses the Rows property.
This little difference made me believe that our feature won't reconstruct but I was wrong, this happens again in .Net 2.0.

So, I took deep dive into the .Net components using reflector but couldn't find something useful to tell. 

I will keep reading about this, what do you think? is it a bug?

Saturday, July 08, 2006 6:45:44 PM (GMT Daylight Time, UTC+01:00)  #    Comments [0] - Trackback
.Net | .Net 2.0

# Friday, May 26, 2006

Many people ask me about the differences between Team System and Visual Studio, and what is Team Suite. When I start my explanation and including informative data such as the Team foundation I can see their eyes roll inside their holes, and their face start changing colors.
Here I'll give short introduction to this subject.

First, I'll start with the Team System - there is no such product, stop using this name, I like to call this a framework or package.
You can see in their product information center: there is no susch product!

The 3-Team Editions: 

  1. Team Edition for Software Developers- includes code analysis, performance  tools, code coverage, unit testing, Microsoft says that it also include the Visio and UML modeling, I didn't find such thing yet.
  2. Team Edition for Software Architects - includes Application designer, Modeling tools, full synchronization between code and design elements, this edition not include neither code profiler/analyzer nor unit testing, web testing.
  3. Team Edition for Software Testers - includes tools for testing and manage the result, you can connect between the test, failure and the code that reproduce this, this edition not include application designer, but the strange one is that this one not include the code profiler and code analyzer.

The all three includes of course the Visual Studio (Professional) with all the programming languages inside.

After we explain the core editions of Visual Studio 2005, lets mix it all together to one package called Visual Studio 2005 Team Suite

Pay attention to the colors, this colors indicate the original colors from Microsoft products.

There is still one product we didn't talk about, the Team Foundation Server (TFS), this one includes management tools, full integration with the client products (all roles of Team Suite). TFS is a server side product which combine together all the relevant data of your projects, such as bugs, code, testings, performance data.

Remember the Team system? now I can explain to you why I call this one framework, when you are working in a company and you have both programmer testers and you want full integration you will probably need the Team Suite and the Team Foundation Server this two products called Visual Studio Team System, but still you will buy them separately.

Friday, May 26, 2006 10:08:02 PM (GMT Daylight Time, UTC+01:00)  #    Comments [0] - Trackback
.Net 2.0 | Microsoft Products

# Tuesday, May 23, 2006

Last Wednesday I had the pleasure to be in the C#/C++ user group at Microsoft.

Oren Ellenbogen, for the first time as a presenter, gave us some tips/samples, new tools and a great show about generics&delegates.

Why the lecture was so good?
1. The simplicity of the PPT:
It has the exact amount of data for keep yourself concentrate at the main issue: the samples.
Some great pictures to wake the sleepy programmers.

2. Oren did a great job with the examples:
Three different ideas that consistently repeated in different ways, help you concentrate and see the cost vs. benefit of the main pattern.

3. Live refactoring for proving your benefits and giving a short summarize about what we've learned.

4. As a dessert, two awesome libraries extending the concept of generics&delegates.

There are still some things to be fixed (or, Tips for your next lecture):
1) People like to ask questions, sometimes because they don't listen, sometimes because they want to prove that they are wiser than the pope and sometimes because they curious and hungry for new information.
As a lecturer you should know when to answer and when to cut it off, of course do it, always, with your charmy smile.

2) When he showed his first samples (which was on purpose long&clumsy) the crowd start staring and asking questions. When you are showing a process (walking step by step) of something you should say it, because people can't read your mind and they start thinking: oh, this code is even worse and they continue with: why do I came to this lecture, where is my wife right now and why the code I wrote today didn't compile.

Oren: I am waiting to hear you next time, it was really great, informative and productive.
To all my readers: pay attention to this guy because he has extremely precious ideas, and he knows a lot of tricks that you can't even dream about them.

Oren already put the presentation & code samples in his weblog, take a look...
He also promised to put the movie, so you could enjoy it too.

Here are two other posts talking about the lecture: Roy Osherove & Ken Egozi
BTW, I saw that Roy put link to my blog in his Israeli .Net bloggers section, it is a great honor to be on this list. Thanks. 

Tuesday, May 23, 2006 11:24:23 PM (GMT Daylight Time, UTC+01:00)  #    Comments [2] - Trackback
.Net 2.0

<July 2015>

The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2015
Shani Raba
Sign In
Total Posts: 146
This Year: 0
This Month: 0
This Week: 0
Comments: 97
Cool Stuff
Add to Technorati Favorites
Pick a theme:
All Content © 2015, Shani Raba
DasBlog theme 'Business' created by Christoph De Baene (delarou)