Monday, October 08, 2007

A group of the Falafel team took a well deserved week of vacation together and headed to Puerto Vallarta.  We had a great time and it was great to spend some time with friends and colleagues.  The Falafel team works very hard and parties very hard as well! :-)

74-685

Monday, October 08, 2007 9:28:59 PM (Pacific Standard Time, UTC-08:00)  #    Comments [0]   Falafel | Family | Life  | 
 Thursday, September 27, 2007

Our friends at AutomatedQA just released TestComplete 6.0 on Wednesday September 26th 2007.  Congratulations to the whole team!

I was in Irvine during that time teaching a TestComplete 5.0 class for 3 days.

TestComplete 6 adds significant new features to the award winning testing tool, from testing 64 bit applications, to testing popular 3rd party controls in Winforms and ASP.NET applications, plus improved Web Testing environment.

Kudos and Cheers to the AQ team!

Thursday, September 27, 2007 1:42:41 PM (Pacific Standard Time, UTC-08:00)  #    Comments [0]   Business | Falafel | Technology  | 
 Wednesday, September 12, 2007

If you are like me, having several computers thrown out of your house, in the middle of the street, out of frustration, because of the simple act of wisdom of trying to open a Word or Excel doc inside you Sharepoint 2007 site, welcome aboard!

After several visits to the therapist, sacrificing a duck and Googling the heck out of this issue, I am happy to share that Microsoft released a hot fix to remedy the situation at http://support.microsoft.com/default.aspx/kb/938888

If you are more interested in knowing what really was going on, well, After installing Office 2007, you must have installed another Office 2007 goodie like Sharepoint Designer 2007 or one of the nice new looking Office 2007 application add-ons that changed an important DLL in your office12 folder called OWSSUPP.DLL or as I call it "Satan.DLL".  Unfortunately, the new DLL is incompatible with NAME.DLL which it has to call into.

As a matter of fact, before this patch from Microsoft, the way to hack it was to get OWSSUPP.DLL from any Office 11 installation then run RegServ32 on it (which will fail by the way) (Not really, as it registered correctly, it just felt like reporting a failure to you anyway as a punishment)

Anyway, I LOVE SHAREPOINT, IT IS CONSULTING AND TRAINING HEAVEN :) 

Wednesday, September 12, 2007 12:15:01 AM (Pacific Standard Time, UTC-08:00)  #    Comments [0]   Falafel | Sharepoint | Technology  | 
 Saturday, September 08, 2007

You would think that finding a good web based Help desk for a company is not that big of a deal.  You Google on "Support Help Desk Web Application" and you get enough results that could take up the entire week in research for finding the one that really works.

Well, I made the mistake of choosing a good product from a bad company few months ago.  I researched for nearly a month seven different companies and their products to satisfy our needs at Falafel Software in having a simple ticket based support system on the web that also has a simple knowledgebase system that can help our customers and users find and request help quickly and easily.  Not too much to ask, right?

First of all, I installed all seven products and played with each one for at least 2 to 4 hours.  For some reason the Help Desk industry fell in love with PHP and MySQL long time ago that it is difficult to find a Help Desk out there that is not based on these technologies.  I have nothing against PHP or MySQL, if the product works, great!, I am ready to install and go for it.

I installed PHP 5.2 and MySQL 5, very easy to do especially if you know you way around config files and command line screens.

The truth of the matter is that for $500 I was able to purchase the FULL SupportSuite from Kayako (www.kayako.com) that looked, felt and behaved as the winner between all the products that I researched.  The company is based in India and the product is pretty mature in its third revision.  I implemented the support system for Falafel and released it on the site.  It looked good, worked well and I needed less than 8 hours of work to customize it and configure for the entire staff to go live which is less than I expected.

The problems started to occur when we started using the product.  It was very apparent to the team here that this product is not ready for prime time and that the team in India has never heard of the term "Quality Assurance" based on the reported bugs and forum messages that you could see for yourself at their company's site.

The final experience was 3 weeks ago when Kayako released a new "Stable" update called 3.11 where they broke the product and caused our support system to stop working on the Live Site.  We opened a support ticket with their team as "Critical" and it took a week of ridiculous answers on their system to finally admit that the update has a major problem. Then a second week to come up with a solution, which fixed the original problem and killed the system notification subsystem and corrupted the database. That of course, includes about 25 discussion threads with their team that could not get them to understand the urgency of the matter.  They concluded that the issue was based on my configuration, which was awkward especially after seeing how many people on the forums were having the same problem.

Anyway, the essence of this post is not really to bash any company, that is not my intent, it is however my intent to share with you the fact that it is not enough to look for a good product when you need one, it is also important to spend some time on that company's web site, forums, discussion groups to see how they treat their customers and how they release products and revisions.

For us, we decided that this product is not at par with what we need to support our customers best.

So I ask you, do you know of a product that would allow submission of Support tickets online and also allow for a Knowledgebase based on categories and finally it must have a good notification system for staff and customers.

Thanks for any input

Saturday, September 08, 2007 1:20:01 AM (Pacific Standard Time, UTC-08:00)  #    Comments [3]   Business | Falafel | Technology  | 
 Saturday, August 25, 2007

I am very excited to be asked to speak at this year's DevReach conference in Sofia, Bulgaria on October 1st and 2nd. I am presenting two sessions this year, the first is "LINO on LINQ" and the second one is "Silverlight, Flash on Steroids".

I am traveling with my colleague, John Waters (Falafel CTO), who will be speaking there as well on "Creating a billion dollar ERP system using Telerik technology".

Spending some time with the Telerik team in Bulgaria and some of the speakers I got to know through speaking at conference worldwide like (Steve Forte, Richard Campbell, Chad Hower and Brian Noyes) will be a treat!

 

DevReach logo

Saturday, August 25, 2007 6:54:26 PM (Pacific Standard Time, UTC-08:00)  #    Comments [0]   Business | C# | Conference | Falafel | LINQ | RadControls | Technology | Telerik  | 
 Friday, August 24, 2007

If you ever wondered what does it mean to have a Team Collaborate, take a look at the picture below where Adam Markowitz (ActiveFocus Chief Architect) is debugging some C# code while Jordan Halls (Executive sales manager) is asking for a customer requested feature, in the mean time, Mike Saad is holding the phone for Adam to reply to a customer's support call.  What a Team! :-)

image

Friday, August 24, 2007 9:41:26 PM (Pacific Standard Time, UTC-08:00)  #    Comments [0]   ActiveFocus | Falafel | Humor  | 
 Tuesday, August 21, 2007

Anonymous delegates are a very neat and useful feature in C# 2.0. The idea of keeping your code tight and simple without having to move all over your code to understand what it is supposed to be doing is always a welcomed feature in today's complex coding endeavors.

Let's take for example a simple class of Mediterranean Food below that just declares a name and description properties:

 
1 public class MediterraneanFood 2 { 3 private string _name; 4 public string Name 5 { 6 get 7 { 8 return _name; 9 } 10 } 11 12 public string Description 13 { 14 get 15 { 16 return _description; 17 } 18 } 19 20 private string _description; 21 22 23 public MediterraneanFood(string name, string description) 24 { 25 _name = name; 26 _description = description; 27 } 28 }

The goal of the code I am going to be writing below is to create a list of Mediterranean foods and then search the list for a specific food.  As you will see the code below, I tried to show how it is done in 3 different ways (Very old, old and Anonymous Delegates way) just to give you an idea of what the difference is and the code changes needed to bring the code to the 21st century :-)

In the first way (Very Old) we just go through the list using foreach to find the specific food we are looking for.  What's the fun in that! :-)

The second way (Old) I declared a delegate called "OldFindFood" and then in the code we pointed to that delegate via a predicate (type of a delegate) and let the delegate do the search for us.  Problem here of course is the meat of what it is supposed to do is far away from where it is being used in the code.

Finally, I used an Anonymous Delegate which does not need any of the previous code.  The anonymous delegate is declared on the fly and implemented right after the declaration making easy and simple to understand what the intent of this code supposed to be doing.

Have fun, let me know if you have questions or if you have a different opinion.

1 private static bool OldFindFood(MediterraneanFood foodToFind) 2 { 3 return ("Kabob" == foodToFind.Name); 4 } 5 6 private static void ShowFood(MediterraneanFood food) 7 { 8 Console.WriteLine("Name: {0} Description: {1}", 9 food.Name, food.Description); 10 } 11 12 static void Main(string[] args) 13 { 14 15 List<MediterraneanFood> mediterraneanFoods = new List<MediterraneanFood>(); 16 mediterraneanFoods.Add(new MediterraneanFood("Falafel", "Made to Order!!")); 17 mediterraneanFoods.Add(new MediterraneanFood("Kabob", "Meat on a skewer")); 18 mediterraneanFoods.Add(new MediterraneanFood("Babaganoush", "Eggplant dip")); 19 mediterraneanFoods.Add(new MediterraneanFood("Dolmas", 20 "Stuffed grape leaves, with meat")); 21 22 23 MediterraneanFood foundFood; 24 25 // -- Very Old -- 26 Console.WriteLine("\nVery old:"); 27 foreach (MediterraneanFood food in mediterraneanFoods) 28 { 29 if (food.Name == "Kabob") 30 { 31 ShowFood(food); 32 } 33 } 34 35 // -- Old -- 36 Console.WriteLine("\nOld:"); 37 38 System.Predicate<MediterraneanFood> myPredicate = 39 new Predicate<MediterraneanFood>(OldFindFood); 40 foundFood = mediterraneanFoods.Find(myPredicate); 41 ShowFood(foundFood); 42 43 // -- Anonymous Delegate -- 44 Console.WriteLine("\nAnonymous Delegate:"); 45 List<MediterraneanFood> foods = 46 mediterraneanFoods.FindAll(delegate(MediterraneanFood foodToFind) 47 { return (foodToFind.Description.ToLower().Contains("meat")); }); 48 foreach (MediterraneanFood food in foods) 49 { 50 Console.WriteLine(food.Description); 51 } 52 53 Console.ReadLine(); 54 } 55 }
Tuesday, August 21, 2007 10:59:15 AM (Pacific Standard Time, UTC-08:00)  #    Comments [2]   ASP.NET | C# | Falafel | Technology  | 

My dear friend Bary Nusz is visiting from Texas these couple of days attending some WPF, Expression Blend and Silverlight training.  He is staying with me these few days and tonight he decided to make a deployment for one of our major customers, but in style :)  I could not help but record his fancy life style while deploying a multi million dollar application from the comfort of my Jacuzzi.

Tuesday, August 21, 2007 3:39:14 AM (Pacific Standard Time, UTC-08:00)  #    Comments [0]   ASP.NET | Falafel | Life | Technology  | 
 Monday, August 20, 2007

I was trying to use the excellent RSS Toolkit 2.0 to place my company's news on the main site at www.Falafel.com in order to allow me to enter news in one place only which is our support.falafel.com site and aggregate all from one place.

I grabbed the RSS feed from here and it was few minutes till I was able to get the RSS Toolkit 2.0 component to show up on the site with the same exact CSS styling and everything.

One thing that bothered me is the publication dates for the news were coming in as a long DateTime format, for example: Fri, 17 Aug 2007 21:52:35 -0700

I am used to fix these problems in the ASP.NET markup by using something like:

<%# Eval("pubDate", "{0:D}") %>


For some reason, that did not work this time.  As a matter of fact, no matter what I place in the second parameter, no change occurs.  I went back to the XML coming from the RSS feed and noticed that the pubDate is placed inside of a CDATA schema, which really means it is coming in as a string and it is way too late in the game to retrieve it differently.

1 <item>
2 <title>
3 <![CDATA[Steve Tefethen Joins Falafel Software]]>
4 </title>
5 <link><![CDATA[http://support.falafel.com/index.php?_m=news&_a=viewnews&newsid=7&group=default]]>
6 </link>
7 <description><![CDATA[SAN JOSE, Calif. July 5, 2007 -- Blah, blah blah. ]]></description>
8 <unixdate><![CDATA[1187412755]]></unixdate>
9 <pubDate><![CDATA[Fri, 17 Aug 2007 21:52:35 -0700]]></pubDate>
10 </item>


Well, to fix this in your ASP.NET application, the easiest way is to do a double conversion on the fly from String to DateTime back to string in whatever format you desire.

<%# Convert.ToDateTime(Eval("pubDate")).ToLongDateString()%>

Monday, August 20, 2007 3:57:16 AM (Pacific Standard Time, UTC-08:00)  #    Comments [0]   ASP.NET | C# | Falafel | Technology  |