Raba - Defend your code RSS 2.0
# Sunday, March 25, 2007

After writing a special post about Changing the annoying ESRI Icon, I found another way to do those things at the ofiicial ESRI site.
Read this post about changing\adding skin.

 

 

Sunday, March 25, 2007 11:45:28 PM (GMT Daylight Time, UTC+01:00)  #    Comments [0] - Trackback
AGX

# Saturday, March 10, 2007

in sysinternals you can find many tools,
this tool: Process Explorer is one that I found useful for my last week.

I am using ESRI product called: ArcGIS Server, which is an of the shelf product with huge API and large architecture, I made some calls from the client to the server, their Map control show an Image from file system, somehow the file is locked: cannot be deleted, cannot be changed., my bigger problem that other users which using the same control and trying to watch the map cannot enter it. I wanted to find which one of the processes locked my image.
Process explorer come to the rescue: you can find more details about its feature here.

Do not afraid of debugging the unknown.

Saturday, March 10, 2007 1:22:19 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] - Trackback
GIS | ArcGis Server

I will start this post by letting you know this genius person named: Scott Hanselman. I know that this is stupid, and you should be shamed if you are not reading his blog, I also know that Scott does not need my redirection nor my readers, but I must let you know about something I liked.

I've just heard the "Hiring and Interviewing Engineers" Podcast, this discussion is between Scott and Carl Franklin it make me lough out loud on my way home this Thursday, I think it is one of the best podcasts I 've heard, here are the things that I think that make this podcast so special:

  1. The podcast is also talking about the fizzbuzz way of thinking, which I totally agree that this is not a good question for an interview.
  2. They are explaining their way of thinking, like coding something you didn't code before, for example: you are good in asp.net, so code me a client service sample.
  3. The best thing, is that this podcast make me think through the podcast which is thing that is not happening so often in podcasts. I really felt like I am in an interview:
    • Create an object model of a Chicken.
    • Have them Critic something... (what is it that you don't like in C#). (great, genius)
    • They have at the end of the podcast: a session of debugging a strange error, one of those randomly shown bugs, and they are trying to resolve the bug together, really cool bug.
  4. I liked the way they talked about the bug and the way they think together.

I think this podcast is a must.

Saturday, March 10, 2007 1:05:39 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] - Trackback
Life

I usually write my posts in a notepad and then paste it to the DasBlog editor, afterwards I fix and rewrite it.
Today I spent almost an hour in a keyboard battle.

my_keyborad.JPG

Those two make my nightmares come through, when I pressed them they do a kind of "go to the prev page" in the explorer (IE7) which delete all the changes I made.

I'll win this battle.

Saturday, March 10, 2007 12:25:28 PM (GMT Standard Time, UTC+00:00)  #    Comments [0] - Trackback
Life | Software Development

At my team we start using the scrum methodology, we are now learning this stuff on the fly, for further understanding I recommend reading Avi Wortzel blog. Avi is the other team leader and a good friend and I admire his way of thinking, pay attention to him.
As Avi said, on daily meeting post, we are two team leaders and we make together the daily meetings (6 people), we both scrum masters each one gets his turn.

I would like to share my thoughts with you:

  1. Fix the "daily meeting" method (or, one more question to the casual three questions)
    • The problem
      I have a problem with the way people are letting you know what they are going to do today, for example: I am working on this module or I am doing that aspx page. The real problem is that the day after it will probably be the same task.
    • Resolving the problem
      • my first rule: talk about the things you really do, the problems you are trying to solve today.
      • I also added one more question, "what did you had to do yesterday and didn't make it".
        This question is the connection between the first and the second. so a co-worker should say: "Yesterday I did this and that, and didn't make this," and then continue with: "today I would continue in that and this"  or maybe: "I won't make it today also it will be postponed to the next week".
      • Don't ask: "why didn't you do this!", you are a scrum master, not a mother, this will annoy your programmers! (read the "Talk to your co-workers not to me: " section for better understanding) .
  2. Keep the order for better understanding.
    • The problem
      • programmers told me that they are confused and do not understand a word from the other programmers, there are many way to solve this issue.
    • Resolving the problem
      • try to keep the order of the sentences, about yesterday, today and impediments while the fourth question is like a hidden question between the yesterday and today.  the fourth is a connective question, you should still distinct between the three parts.
      • don't mess the sentences order, it will cause a confusion in some of your co-workers.
      • there are people who like to talk, that is not a problem, but do it in your turn, and in the right order.
  3. Talk to your co-workers not to me:
    • The problem
      • I always feel that people are talking to me and not to the other co-workers at the room, I don't have a good solution for this issue, but as far as I know it will take them time to understand it.
        You are probably asking time? so when? I think that on the day that they will really feel that the last meeting was helpful to you he or she will do it right.
    • Resolving the problem
      • I don't have a good solution for this issue, but as far as I know it will take them time to understand it.
        You are probably asking time? so when? I think that on the day that they will really feel that the last meeting was helpful to you he or she will do it right.
      • Scrum master questions: don't!, if you are the team leader & also the scrum muster, you should try to be less dominant, your workers\programmers always feel that you are testing them, yes this is true the team leader is always watching you, but try to do this without irritate them, let them feel you trust them, let them make their mistakes, this will also help them feel that they are talking to their friends not to you. (it sounds stupid, but there is a lot of ego in the room after all, and some one should give up).
  4. Implement the whole class do not left stubs out there. (or, daily meeting as a part of the whole scrum methodology)
    • The problem
      • People are implementing only part of the system.
    • Resolving the problem
      • I don't think that this is a real big problem, but you must understand the strengths and weaknesses of each feature in the methodology so you could choose whether to implement or not.
      • I think you can't do daily meetings without the scrum review.
      • I do think that you need to implement the whole methodology together, but if you need to start, it is better to start with
           part of the methods and learn the other on the fly.

What do you think?

Saturday, March 10, 2007 11:01:03 AM (GMT Standard Time, UTC+00:00)  #    Comments [2] - Trackback
Software Development | Agile | Scrum

# 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:

[TestMethod()]
public void FeaturesProperty_SetProperty_GetTheSame()
{
   IList<string> classifications = new List<string>();
   classifications.Add("class1");

   IList<string> expectedClassifications = new List<string>();
   expectedClassifications.Add("class1");

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

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

[TestMethod()]
public void FeaturesProperty_SetPropertyToWrongClass_GetDifferentClass()
{
   IList<string> classifications = new List<string>();
   classifications.Add("class1");

   IList<string> expectedClassifications = new List<string>();
   expectedClassifications.Add("class2");

   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

# Tuesday, February 13, 2007

I am gonna present tomorrow to the managers about the geographical approach in my department.
I just finished creating scenarios to those products:

  • ESRI ArcGIS Explorer
  • MS Virtual Earth 3d
  • Google Earth

After more than 3 years developing GIS applications, I must admit that we have today good/solid SDKs, for a simple and further usage.

 

I would like to give some scenarios to the non-trivial GIS applications:

supermarket products:

  • can be mapped to a Geo-DB, and easily find in space.
  • think about customer who searches a product using Geo-DB application pressing the product name, and the screen will show him the best way to get there.

Library mapping:

  • Think about mapping your library using a geographic engine, each book can easily find in space.

Hospitals:

  • we can find behaviors of diseases in different places in the world/country/city.
  • such task wouldn't so trivial before, but today it is in a daily basic.

 

My Tip:

  • Think about your applications today, you can easily move them one step further and give them a better UI.
  • Tomorrow you could easily earn the added value, from (Data)mining the geographic behaviors.


Wish me luck...

Tuesday, February 13, 2007 11:25:05 PM (GMT Standard Time, UTC+00:00)  #    Comments [3] - Trackback
GIS | Software Development

# Tuesday, December 19, 2006

ESRI Just released the 9.2 version, which holds pretty much cool features, but still has a lot of stuff to work on till the next release.

IMHO, ESRI should work much more like MS when planning the next release (talk to their clients),
One way to do this is to free the beta on the net to whom it may concern, and open more official blogs and forums to the crowd, so we will help doing better product together.
I think that it will help them learning more new stuff\old habits.

This are my highlights, (I am still learning the 9.2 so I'll keep updating this list):

  1. Performance - They have today better performance than ever (I have a doubtful honor to write code using the map-objects and the ArcIms products, which were both terribly bad products {3.1 Version})
    But still, a lot to improve: build pyramids and calculate statistics still take hours even on good machines and therefore we cannot use this regularly on real time.
    The "simple" AGX, which should be used on each client, need better machine which not all of our clients can afford, and not to talk about the bandwidth.
  2. Prices - I honestly think that it is not reasonable to pay per CPU, I hope that there would more competitors (Google, Microsoft) so the price for the next version will be lower.
  3. Better Design - the code examples and the design patterns (no DP at all) are everything we learn not to do at school.
    Please take some lessons in usability (at MS School) because it is hardly to read and not intuitive.
    Not to mention the code in the Web Controls which always placed in the wrong method at the control life-cycle,(for example: load data in pre-render, Ajax stuff mixing inside simple renders)(I saw this in the beta, I didn't check it in the release, yet).
  4. WPF - It is about time that finally ESRI will work with MS step by step, I should ask why won't we use the Xaml for this version (which released almost at the same time as the FW3.0).
    ESRI should take care that the next version should be FW3.0 certified, using the Xaml.
    Not to mention the Orcas Enabled.

Please add your suggestion, hopefully to find someone in ESRI to listen to my requests.

Tuesday, December 19, 2006 12:06:30 AM (GMT Standard Time, UTC+00:00)  #    Comments [3] - Trackback
GIS

Archive
<March 2007>
SunMonTueWedThuFriSat
25262728123
45678910
11121314151617
18192021222324
25262728293031
1234567
Disclaimer

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

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