navigation
 Monday, March 15, 2010
Falafel is in full force at MIX 2010 in Las Vegas this year exhibiting in the Commons area at the Mandalay Bay Hotel & Casino.  We are all very excited to be here this year to witness the latest and greatest on Silverlight 4, Mobile 7, Mobile 7 with Silverlight, ASP.NET, MVC 2, Sketchflow, IE9, Blend 4, and so many other surprises and fun week at the sin city!
Stop by the booth and ask for your cool Falafel shirt!  they will go fast :)  We would love to chat with you as well!
image  image
  Mix10_SeeYou_blk_240
image
 |  |  |  |  |  |  | 
posted on March 15, 2010  #    by Lino Tadros  Comments [0]
 Thursday, February 04, 2010

Lino Tadros, CEO of Falafel Software, recently participated in an SD Times interview, see the full text here. The interview focuses on the ever increasing pace of software and component evolution, and how component vendors like Telerik and software consultants like Falafel can harness that to bring value to their customers.

posted on February 4, 2010  #    by John Waters  Comments [0]
 Sunday, January 31, 2010

Ok, it looks good, hey it is black :) fancy touches and demos well in Steve Jobs’ hands.  But do I want one of these?

image

The answer is NO, for so many reasons.  I have to say I am disappointed.  I expected Apple to continue being on a roll and bring something that will change the Tablet market forever after the failure of Microsoft and others before it in the pursuit of consumer happiness :)

  • No camera? What were you thinking?  I was expecting TWO of them in the front and the back.
  • No multitasking? Really? this is not a phone, so that is not ok.
  • Is this the Kindle killer, NO WAY, it is much better and easier on the eye to read on the Kindle.  Remember, FANCY and COLORS does not mean better.
  • AT&T, really??? AGAIN???  you never learned from the IPhone deal that AT&T was your weakest link.
  • “Excellent for surfing the web” Really? with no Flash or Silverlight support?  Which web are you surfing?
  • No USB?  Really??? COMMMMEEEE ONNNN
  • No HDMI or any other video output?  COMMEEEE ONNNN
  • No 16:9 aspect ratio for watching movies?

This device is the “most important device of Steve Jobs’ career” as he said on stage two days ago in San Francisco while announcing the device.  No Steve, it is not, you have done very well, don’t sell yourself cheap with a statement like that.

The impressive part about the IPAD really is that Monotouch within 24 hours released an update to their product that will allow you to target the IPAD while continuing to build applications in C#.  I guess the good thing is that the binary format for apps is the same as IPhone while including some new namespaces for the new UI dimensions and layouts.  Kudos to the Monotouch team!

Is it just me or you agree with my opinion? Let me know here by posting a comment

 |  |  |  |  | 
posted on January 31, 2010  #    by Lino Tadros  Comments [1]
 Friday, January 22, 2010

This is a very important placement. The Global 100 is Red Herring’s roll of the top 100 privately held global tech companies; sort of "the Fortune 500 list but for tech", according to Stephen Forte's blog. Our industry looks to this list to see who the next mover and shakers are.

Previous winners inclue Skype, YouTube, Salesforce and of course Google.

Finalists are selected from the regional recipients or finalists of the Red Herring 100 awards in 2007, 2008, or 2009 from Asia, Europe, and North America. The award is based on their technological innovation, management strength, market size, investor record, customer acquisition, and financial health.

Congratulations Telerik!

FALAFEL is proud to serve as Telerik's consulting and training arm.

For very interesting info on Telerik, see Stephen's blog at: http://www.stephenforte.net/PermaLink,guid,9f76e8ed-67fe-4730-8754-f2144c0cb546.aspx

posted on January 22, 2010  #    by Anneke Leigh  Comments [0]
 Wednesday, January 06, 2010
Two recent events lead me to believe that this may indeed be the case...
posted on January 6, 2010  #    by John Waters  Comments [0]
 Thursday, December 03, 2009
I can’t believe I am saying this, but it is true! My IPhone 3GS is OBSOLETE! Couple of years ago when I moved from my beloved Verizon to AT&T in order to get my hands on the IPhone, I had to endure the torture, bad service and extreme ignorance of AT&T just for the pleasure of being able to use an extremely well designed IPhone. I love the phone and HATE the service. Visual Voice Mail, elegant UI, music, fast processors, hundred of thousands of app on the app store, etc… were strong enough for me to bite the bullet and go with AT&T.
posted on December 3, 2009  #    by Lino Tadros  Comments [2]
 Tuesday, November 17, 2009

So the show is on the road again. Falafel has a booth (come visit us), as do all the usual suspects, we met our friends at Telerik, Developer Express etc. The FU T-shirts and Sumo wrestlers are going like hot cake, thanks Matt for making us look good!

The Keynote this morning was a big aha moment from me. Its all about the cloud, which for Microsoft is Windows Azure. Very exciting, they have been busy and come along way since last year. The new SQL Azure service behave just like SQL Server, and you can even use SQL Server Management Studio to work with it using your familiar Transact SQL commands. Also, the development tools, management and monitoring tools, deployment etc are shaping up nicely.

The PDC drop of RIA Services for VS 2010 and .NET Fwk 4/ Entity Fwk 4 is looking very capable, will find out more about that on Thursday.

Now attending a talk on ADO.Net Data Services and .NET Entity Framework. They have done tons of work here since version 2.0. There is model first development (generate the DB from the model), support for POCO classes and change tracking, much better SQL generation and support for executing customized SQL and stored procedures.

Day 2: Wow! Microsoft just released Silverlight 4.0, and it has ALL the features that were missing! I don’t even know where to start! Here is a quick list: supports rich printing, access to external devices, access to webcam and microphone, can run in trusted mode and access file system and cross domain network access, does HTML in OOB mode, full OOB window management support (custom windows chrome), drag and drop files into the SL app, play flash inside the SL app, expanded WCF support (net tcp), right click, improved theming, improved data binding, runs full .net fwk assemblies, twice as fast…. what do you think? Seems like a go? It is beta now and RTM first half of 2010.

Oh – and today Microsoft scored big points by giving all the paying attendees a laptop! That drew some standing ovations at the keynote.

Day 3: Attended “Building Amazing Business Applications with Silverlight 4 and RIA Services” with Brad Abrams, Program Unit Manager. Very slick tooling and designer support! Nice implementation of server and client side filtering, and composing client side operations (filtering, sorting, paging) with server side execution.

I will update this blog as I find out more.

posted on November 17, 2009  #    by John Waters  Comments [0]
 Tuesday, October 13, 2009
Falafel will be exhibiting, come visit our booth to discuss Silverlight for your business, Silverlight Training, or to join our Silverlight team!
posted on October 13, 2009  #    by John Waters  Comments [0]
Lino Tadros is stirring up a huge amount of interest at DevReach 09 in Sofia
 |  |  |  |  |  | 
posted on October 13, 2009  #    by John Waters  Comments [0]
 Sunday, September 27, 2009
Every 2 to 3 years I end up purchasing a new powerful laptop in order to get the latest and greatest of what is happening in the Laptop hardware market and run my applications and development tools very fast and furious :) Well, I just received my AlienWare M17x this weekend and wow! that is one good looking laptop. Very nice indeed!
posted on September 27, 2009  #    by Lino Tadros  Comments [10]
 Wednesday, September 16, 2009
Find out how to save time and space (not like Dr Who) by using Differencing Disks to configure variations of your core install in Virtual Machines under Hyper V.
posted on September 16, 2009  #    by John Waters  Comments [1]
 Monday, September 14, 2009

In case you wonder, as I did a few days ago, what Hyper V is, here is a simplified answer (the Wikipedia will tell you more):

Hyper V is kind of like Virtual PC for Servers on Steroids: it allows you to efficiently run and manage a whole bunch of different VMs on one machine. Hyper V is a role that is added to Windows 2008 Server (or Windows 2008 Server R2). Once you add the role, some strange things actually happen to your Windows Server installation: it actually becomes it’s own ‘parent partition’ on the server, so that it is also virtualized along with the VMs that you create.

There are many differences between Hyper V and Microsoft Virtual PC. First of all, the VMs have access to way more virtual hardware: multiple processors (Virtual PC only gives you one processor, even on a many core machine), and much more memory. It also requires Hardware Virtualization Assistance, which is present on most modern manycore processors, but if often turned off in the BIOS (I had to turn it on on my Alienware M17X, see this helpful tip). Hyper V also comes with all kinds of nifty management tools, and is trying to get into the datacenter-level virtualized server market.

To confuse things further, there are lots of different SKUs for Hyper V. You can purchase Microsoft Windows Server 2008 (and R2), and enable the Hyper V role, or you can get the free Microsoft Windows Hyper V Server 2008… it’s almost like SKU palindromes! The latter is a stripped down version of the full server SKU that is just specialized in the Hyper V role, and preconfigured for it.

Why would a developer care about all of this? Well, VMs are a great way to test new software, for instance I will be talking about Visual Studio 2010 and the .NET Parallel Computing initiative, and the current beta happens to not be uninstallable (sorry about the double negations). So if I install it on my machine I have to reinstall everything for the next beta refresh. Having better things to do with my time (like blogging about Hyper V on Sunday evening), I would rather put it in a VM. If you have been paying attention you will recall that MS Virtual PC only supports one processor, so that isn’t going to do me much good testing and demoing Parallel Processing…. hence the Hyper V approach. In a later blog I will detail my whole setup and post more on my findings preparing for the Parallel Processing talk at Silicon Valley Code Camp 09.

posted on September 14, 2009  #    by John Waters  Comments [0]
 Monday, August 31, 2009
The voting for the 2009 Windows IT PRO Community Choice Awards started and is now open till September 16th 2009.
Take the next 15 seconds to vote for your favorite tools and services.
Falafel Software is in category #30 for Training and Certification Services.  Also don’t forget to vote for our favorite tools from Telerik in categories #5,10,27,32 & 33
 |  |  |  |  |  | 
posted on August 31, 2009  #    by Lino Tadros  Comments [2]
 Sunday, August 09, 2009
Ever find yourself getting emailed tasks and then noticing they get lost too easily in the daily pile of emails? Generally it doesn’t happen to the really important ones, or those that are tracked by some other task/project tracking mechanism. To avoid permanently feeling scatterbrained, I started trying to use the Tasks section of Outlook 2007 to track such otherwise un-tracked items on my To-Do list. I liked the categorization, and also the summary list that showed up next to my email reading pane. But recently I found a feature that makes it invaluable – Drag and Drop tasks!
posted on August 9, 2009  #    by Rachel Hagerman  Comments [2]
 Wednesday, July 22, 2009

Two hours ago, Microsoft released Windows 7 to Manufacturing.  Congratulations Microsoft!.

How is Windows 7 going to do in the marketplace is something a lot of people are wondering. Is it a good OS? YES indeed! I have been using it for a while and it is definitely a pleasure to work with.  I still can’t believe they were able to lower the barrier so much for “Aero” that it can work on more modest machines with no problems whatsoever.  The OS is fast and several issues that drove people crazy in Vista have been eliminated or fixed in W7.  For a development platform, it is rock solid and I have VS 2008 and VS 2010 running with heavy use of WCF, Silverlight 3, LINQ, MS SQL 2008, etc.. all day long with great performance.  What’s your thought on W7?

posted on July 22, 2009  #    by Lino Tadros  Comments [0]
 Sunday, July 19, 2009

Congratulations to the Axosoft team for the release of OnTime 2009 9.1 and especially for the IPhone client app on the Apple ITunes Store that was released few hours ago!

I downloaded the app from the App Store and it installed in seconds.  Running for the first time, I was presented with the set up screen where I had to specify the URL of where the WEB server installation for OnTime for us here at Falafel Software was installed.  I found really quickly that the server required SSL to use the Client from IPhone, which we do not require for our Web installation.

Spending less than a minute in the HELP of OnTime 9.1 directed me to the Web.Config file of the Web installation where the SSL feature for IPhone is turned on by default.  Change that line to false as shown below in your Web.Config file and you will be ready to go.

<add key="RequireIPhoneSSL" value="false" />

But to be secure I encourage everyone to run this IPhone app over SSL for security as passing username and passwords over the wire can be very easily sniffed without SSL.  It cost less than $30 per year and will take minutes to install the certificate on the server for this to work.

Congrats again Hamid and Team at Axosoft!

posted on July 19, 2009  #    by Lino Tadros  Comments [1]

Humm, well, that was a bad start :(

I just got my Kindle 2 in the mail and I was very excited to start using it. 

I bought my first book this morning and it was downloaded automatically to the device within seconds, very impressive. The only problem was, I could not open the book on my new Kindle.  I got an error saying “Unexpected Error”.  I reset the device, deleted the book, forced a second download, same problem.  Reset again and again, no go.

I downloaded my book to my Kindle IPhone, that worked right away.  Googled on similar issues, found lots of entries for the old Kindle but not much for the new one.  Everyone says “Reset the device” which did not work for me.

What I finally did, I deleted the book from the device, hooked it up to my computer via USB, went to the DOCUMENTS directory and delete the TWO tmp files for the book that were there and downloaded the book as a .tpz file to my PC then moved it to the DOCUMENTS directory of the Kindle manually.  That worked!  Don’t know what happened, but it was a bad first experience.  Hope this was just a fluke and I can just enjoy my Kindle going forward.

image

posted on July 19, 2009  #    by Lino Tadros  Comments [0]
 Saturday, July 04, 2009

When:  Wednesday, 7/15/2009 at 6:30 PM
Where: Microsoft San Francisco Office, 835 Market Street, Suite 700, San Francisco

Lino Tadros, Chairman & CEO of Falafel Software is presenting this session at the Bay.NET User Group at the Microsoft offices in San Francisco on July 15th 2009 starting 6:30 PM.  Feel free to register for the Event here and look forward to seeing you there.  It should be a very exciting and fun session.

 |  |  |  |  | 
posted on July 4, 2009  #    by Lino Tadros  Comments [1]
 Thursday, July 02, 2009

Capitola, CA - July 1st 2009, Microsoft awarded Lino Tadros, Falafel Software’s Chairman & CEO, the prestigious MVP award in the C# language category for the 6th year in a row.  This award is mainly awarded to few individuals worldwide for their contributions in the C# community and helping Microsoft with the short term and long term strategies of the language.

Lino Tadros has been presenting numerous sessions on the language in the USA, Europe and Australia since the year 2000 in many of the industries’ top conferences.

MVP_FullColor_ForScreen

 |  |  |  | 
posted on July 2, 2009  #    by Lino Tadros  Comments [0]

On July 1st 2009, Falafel presented a 90 minute Webinar on the WebAii Framework and the Automation Design Canvas product from ArtOfTest.  The Webinar touched on several areas like using the Automation Design Canvas in Visual Studio 2008, TestRegions, Browsers, AJAX testing and most of all Silverlight application testing in the new Q2 2009 Beta 2 release.

You can view the recording of the Webinar below, make sure you view it full screen.  We hope you enjoy viewing the video and get a better understanding of the whole framework.

Let us know what other Webinars and videos you would like to see about these topics for future presentations.

posted on July 2, 2009  #    by Lino Tadros  Comments [0]
 Saturday, May 02, 2009
How to delete TortoiseSVN Username/password cache for specific repositories in three easy steps!
posted on May 2, 2009  #    by Brad Divine  Comments [0]
 Wednesday, April 01, 2009

Our dear friend at Falafel Software Gary Campbell, this week, achieved MCP Certification status (Microsoft Certified Professional) on ASP.NET.  Congratulations Gary! 

Gary has been a solid member of the team working on the latest and greatest of technologies for our customers with great success.

posted on April 1, 2009  #    by Lino Tadros  Comments [2]
 Saturday, March 21, 2009

Our dear colleague at Falafel Software Brad Divine, this week, achieved MCSD status (Microsoft Certified Solution Developer).  Congratulations Brad! 

Brad just passed the final exam of Software Architecture after passing the ASP.NET, WinForms, XML Web Services and SQL Server exams before then.

Wow!  Two members of the team at Falafel achieved MCSD status in one week, Congratulations to Brad and also to Falafel Software!.

Microsoft Certified Solution Developer

posted on March 21, 2009  #    by Lino Tadros  Comments [1]
 Tuesday, March 10, 2009

Our dear friend and Master Consultant Adam Anderson achieved MCSD status (Microsoft Certified Solution Developer).  Congratulations Adam! or Mr. SQL as we call him here at Falafel during the last 5+ years.  Adam has been an incredible asset for Falafel from the start and a go to guy for many technologies.  He is always there for everybody to lend a hand and help grow the company and achieve great things.  Adam passed his last exam yesterday on Software Architecture after passing the ASP.NET, Winforms, XML Web Services and SQL Server exams before then.

Congratulations again Adam! and we will celebrate with you in Capitola on Thursday!  You can Super Size! :)

posted on March 10, 2009  #    by Lino Tadros  Comments [1]
 Tuesday, March 03, 2009
Today was the second day at the MVP Summit in Redmond and it was a lot of fun.  This is my 5th MVP summit and it is so nice to see all the faces that I don't get to see except at the MVP summit from all over the world.  We spent several hours with Anders Hejlsberg discussing futuristic features to the C# language and the evolving of this powerful powerful language inside of the Visual Studio IDE for the next few years.  Met so many friends that I usually see in Europe and Australia while speaking at conferences like Miguel Castro, Richard Campbell, Steve Forte, Todd Anglin, Neil Ford, Remi Caron and many others... It was so nice for us not to be speaking this time but actually attendees :)
These events are usually for us like taking kids to Disneyland :)
This time is so special though because it is the first time I took my wife with me to Microsoft to see what I do and meet these friends.  She was shocked on how childish we all are when we get together :)
    mvp
posted on March 3, 2009  #    by Lino Tadros  Comments [0]
 Wednesday, November 26, 2008

On December 2nd 2008 at 6:30 PM, Lino Tadros, President & CEO of Falafel Software, will present two sessions on AJAX and Silverlight 2.0 from 6:30 to 8:30 PM at the Foothills College campus in Los Altos Hills.

Please visit http://www.baynetug.org to learn more about the UsersGroup and the two sessions.  Hope to see you there!

 |  |  | 
posted on November 26, 2008  #    by Lino Tadros  Comments [1]
 Monday, November 17, 2008
Would you like to associate each of your subversion check-ins with a particular issue, bug or change request? TortoiseSVN provides an easy way to link revisions to issues in any bug tracking system.
posted on November 17, 2008  #    by Mike Dugan  Comments [3]
 Thursday, October 23, 2008

Hi Fellow .NET geeks worldwide! Are you going to be at PDC 2008 in Los Angeles ?  If Yes, then look for our CTO, John Waters in this flashy shirt seen below around the Telerik booth # 401

We are looking for a few GOOD .NET developers and trainers, John will be conducting interviews right at the PDC, who knows you might go home with an offer letter in hand to start working for a fun and successful company.

Best of luck to all and have a great conference!

dotnet

 |  |  | 
posted on October 23, 2008  #    by Lino Tadros  Comments [1]
 Thursday, September 04, 2008
Last week I went to PAX for the second time and here is what I have to say about it.
posted on September 4, 2008  #    by Aaron Rhodes  Comments [0]
 Tuesday, August 12, 2008
Need to capture popups or tooltips in your screen shots? It's easy with the Windows Vista Snipping Tool.
posted on August 12, 2008  #    by Rachel Hagerman  Comments [1]
 Wednesday, July 23, 2008
Lino Tadros, President and CEO of Falafel Software, has been invited to speak at the DevReach conference in Sofia, Bulgaria
 |  |  |  |  |  | 
posted on July 23, 2008  #    by John Waters  Comments [1]
 Tuesday, June 17, 2008

OK, so I'm a little late to the party. I've been using it for a few days now, and I'm very pleased. Browsing is even faster, and there are new features like the Quick Find address bar that performs full-text searches on every page in your browsing history. Give it a try at www.opera.com/download.

posted on June 17, 2008  #    by Adam Anderson  Comments [1]
 Thursday, June 12, 2008

We enjoyed meeting the TechSmith team at TechED this year. We are big fans of Snagit and Camtesia Studio and all of us here at Falafel use their products for several years now.  SnagIt 9 was released this week at TechED with awesome new features.

Picture below is for Betsy Weber, Chief Evangelist of TechSmith, and Lino Tadros from Falafel Software at the show.  Stay tuned for great new announcements coming up from both companies partnering to bring the latest and greatest in technology to customers worldwide :)

posted on June 12, 2008  #    by Lino Tadros  Comments [0]
 Monday, May 12, 2008
Found quite a gem today. I've always installed the Windows Powertoys feature to get the "Open Command Window here" option when you right-click a folder in Explorer. I've discovered that this is not needed in Vista.
posted on May 12, 2008  #    by Angelo Martinez  Comments [1]
 Tuesday, May 06, 2008

I'm a big fan of the Opera browser for its speed and excellent out-of-the-box functionality. One of the few things I have been willing to concede that it was lacking was a good interactive debugger like FireBug, until now. Opera Dragonfly has arrived!

posted on May 6, 2008  #    by Adam Anderson  Comments [1]
Consider how many times we’ve run into the following scenario: We’ve got a GUI design, say, a simple WinForm. Upon interaction with the form, we need to launch a CPU-intensive operation, one which might take a while. At some point the operation will complete and we want the result to show on the form. That’s where the problem starts...
posted on May 6, 2008  #    by Angelo Martinez  Comments [1]
 Tuesday, April 29, 2008
I was working on some code today, that was trying to find a string in a list of strings. I came up with a neat way to express it using a lambda expression.
posted on April 29, 2008  #    by John Waters  Comments [1]
The first time I tried to add an intro and an exit slide to a Camtasia video, I had some problems with the audio becoming un-synced. Here is how to add the sound and image slides to the video without problems.
posted on April 29, 2008  #    by Aaron Rhodes  Comments [1]
 Thursday, February 28, 2008
If you need to create a 'sometimes connected' or briefcase model web application, be sure to check out Google Gears...
posted on February 28, 2008  #    by John Waters  Comments [0]
 Saturday, February 16, 2008
My colleague Steve Trefethen notified me this morning that Windows Vista SP1 was available on MSDN downloads, so I took it for a spin...
posted on February 16, 2008  #    by John Waters  Comments [0]
 Tuesday, November 27, 2007
image Yeah, I bought my new laptop this week after 2 years of using a great Dell Inspiron 9300.  The new XPS M1730 is very fast, very heavy and looks pretty.  With 4 Gig of RAM, 400 Gig of hard disk at 7200 RPM, Intel Core 2 extreme 2.8 GHZ each, 5 speakers, built in Video camera, Dual SLI GeForce Go 8700, Blu-Ray Disc, oh yeah one more thing VISTA ULTIMATE.  It was disappointing to buy the laptop from the Dell web site advertising that 4 Gig will make your Vista Scream, well I ended up the one screaming when I found out that Vista will never be able to see that last Gig of Ram and that the max a Vista machine can see is 3 Gig.  Really bad on both sides:
1- Dell, why do you advertise such a thing when you know it is not possible to do.
2- Microsoft! I have a hard time believing with all the advancement of technologies and the 200 new products you put out a month, that you are having a hard time making your flagship OS of the future see 4 Gig of RAM, that is ridiculous.
posted on November 27, 2007  #    by Lino Tadros  Comments [1]
 Tuesday, November 20, 2007

Falafel is partnering with Microsoft to offer this free half day seminar at the beautiful Saint Claire hotel in downtown San Jose, CA to celebrate the release of Visual Studio 2008, LINQ, WPF, WCF, WF and other exciting technologies.

ActiveFocus Hosting

Please join us on December 10th from 9:00 AM to 1:00 PM
Register on the Microsoft event site ASAP as space is limited.

Charlie Calvert, the C# Community Project Manager will be there to talk about LINQ and Lino Tadros will present the usefulness of the new technologies.
Hope to see you there!
 |  |  |  |  |  |  |  |  |  | 
posted on November 20, 2007  #    by Lino Tadros  Comments [0]
 Saturday, November 03, 2007
We will be in Las Vegas between Nov 5th and 8th exhibiting at booth # 832. Please stop by and say hello, we have a cool T-Shirt for you and some other goodies! We will be demonstrating our Project Productivity Management Solutions "ActiveFocus 2007" and we will also be showing a sneak peek at ActiveFocus 2008 due at the end of this year. If you can't find us in the booth, look in the Rum Bar at Mandalay Bay or the Craps table near by
posted on November 3, 2007  #    by Lino Tadros  Comments [1]
 Wednesday, September 26, 2007

Wow!  I was told so many times that Visual Studio 2008 will ship in 2007, well it does not sound like that is a possibility anymore.

Microsoft released a new date, February 27th 20008 to release Windows Server 2008, Visual Studio 2008 and SQL Server 2008

2008 Global Launch Wave
963
Days
Windows Server 2008 • Microsoft Visual Studio 2008 • Microsoft SQL Server 2008
posted on September 26, 2007  #    by Lino Tadros  Comments [0]
 Saturday, September 22, 2007

With the demands of new major consulting projects, preparing for ActiveFocus 2007 Q3 and 300% increase in the company's training business this year, Falafel is hiring!

We are looking for:

  • Sharepoint Experts
  • ASP.NET 2.0 Developer
  • .NET Architect
  • 2 Technical Writers

If you want to join a dynamic team, fun company to work for, excellent atmosphere, full benefits and work with the best on the latest and greatest of technologies worldwide, send us your resume at jobs@falafel.com

posted on September 22, 2007  #    by Lino Tadros  Comments [0]
 Monday, August 27, 2007
Discover some strange but sadly true limitations of the Virtual PC support for ISB devices...
posted on August 27, 2007  #    by John Waters  Comments [3]
 Saturday, August 25, 2007

I had the privilege of attending a two-day training for Expression Design and Expression Blend this week in San Jose, CA.  The trainer, Joshua, was knowledgeable and fun to learn from.  We enjoyed his training and personality.

Unfortunately, the product is just NOT ready for prime time.  I was shocked! Really shocked! Poor guy had to apologize almost every three minutes for two days on how the product works and why he has to do things in a very awkward way to get it to behave.
First the IDE is not intuitive at all.  I thought, hey I am a developer, maybe this is just not for me, but all the designers in the room were shaking their heads as well.

There was total confusion between canvas and layers in Blend, disturbing implementation for differentiating between selection and scope that could easily waste hours of work. There lacked in the IDE a clear path to redirect the effort to the correct path.
Look at the Trigger clickable button in the IDE in the picture below.

image

I thought you click that to access the Trigger page, nope, if you click on that Trigger button, you will delete the only trigger you have on your WPF form.  Who designed this IDE?
Yes I can see now the + sign and the minus sign but that is just not the way it is done guys.
At some point the IDE will be so cluttered with docked windows that it rendered the experience of working in the IDE totally useless.
You can save your designs as .Design files in Expression Design and export the XAML to Blend. That is a one way street; blend can not send the xaml back to design.  Expression Design does not know anything about .XAML files either and can not open them.  Just make them!
The scrollbar in the properties window disappears often and the user can no longer get to the properties off the screen space currently visible. Eventually, resizing the docked windows brings back the scrollbar.
Modifying XAML code in the editor sometimes does not reflect the change in the designer unless you close down the project and reopen.
Ok, that is enough, you get the picture.  Great idea, powerful product, long way to go to get it to be productive and useful.

posted on August 25, 2007  #    by Lino Tadros  Comments [1]
 Thursday, August 16, 2007

I have spent the last few days trying to install Visual Studio 2008 a.k.a. Orcas Beta 2. The download page is here.

The basic idea is that you download a virtual machine that has both the OS (Windows Server 2003) and Orcas preloaded. First, you download a base file called VSCTPBase.exe, which you unpack to get a virtual hard drive. Then, you download 7 RAR files. The first one is self extracting and extracts itself and the rest of them, and then builds a differencing disk which is added to the initial virtual hard drive to create the final virtual drive. At least, that was the theory!

As the whole setup uses a lot of space, and I am almost out of space (as usual) on my laptop, I borrowed a 300 Gb external disk from work to put the VPC on. I downloaded the files mentioned above onto that disk. I then unpacked the base image, and started unpacking the 7 RARS. Well - somewhere in the middle of the third one, I get an error message saying

"Write error in the file OrcasBeta2_VSTS.vhd. Probably the disk is full."

Not! I had about 250 Gb free on the disk. OrcasBeta2_VSTS.vhd is the differencing disk that was being merged from the RARS. So, I scratched my head, googled, couldn't find anyone else with the same problem, tried downloading the file again, rebooted, tried again, sacrificed a goat. No luck.

So I tried searching for the message above as "Write error in the file" and "Probably the disk is full." Now I got lots of hits, this seems to happen a lot to people. Finally, I stumbled across a post saying that there is a file size limit on FAT32 volumes, somewhere around 4Gb.

FAT32? I had forgotten about that evil stuff, along with win.ini, config.sys, thunking, himem, edlin, floppy disks and gorilla.bas! And sure enough, the 300Gb external drive was formatted as FAT32. Duh!

So, a quick command brought my external I: drive out of the bronze age:

convert I:/FS:NTFS 

And now the extraction worked.

Can you believe that? Poor Microsoft trying to get it's developers to beta test their latest and greatest development tools, and you run into FAT32! Talk about a blast from the past. Tonight I will dream nightmares about 640K memory limits and 16 bit operating systems... and the turbo button.

posted on August 16, 2007  #    by John Waters  Comments [1]
 Thursday, July 19, 2007

While setting up a CruiseControl.NET server for a project here at Falafel I ran into this error:

svn: Working copy '.' locked
svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)

After executing svn cleanup from the command line numerous times to no avail I finally realized the problem was a missing <workingDirectory> node for the project in the ccnet.config file. Well, I won't be making that mistake again.

posted on July 19, 2007  #    by Steve Trefethen  Comments [1]
 Sunday, July 15, 2007

A while back I was trying to figure out how to make F1 bring up a custom help window in our web application ActiveFocus. It is easy enough to trap a keypress and open a window showing the help, but to my frustration, after popping up the new window, the built in Internet Explorer help window popped up too!

I tried various variations of cancelling the kepress event, but nothing seems to work. This is for instance how I cancel Ctrl+F (which normally pops up IEs built in Find dialog, but I wanted it to show a custom search dialog instead) :

<script type="text/javascript">

function onKeyDownH(e)
{
  e = window.event;

  var ctrl = (e.ctrlKey) ? true : false;
  if (ctrl == true )
  {
    if ( e.keyCode == 70)
    {
      e.returnValue = false;
      e.keyCode = 0;
      ShowSearchPage();
    }
  }
}

function onloadH(e)
{
  document.onkeydown = onKeyDownH;
  return true;
}

window.onload = onloadH;

</script>

This cancelling approach by the way does work for other keypresses, just not F1, which has some kind of special internal handing. After much head scratching I finally stumbled across this simple solution:

<body onhelp="ShowHelp(); return false;">

Here, ShowHelp does the actual showing of the help window.

Simple, huh? If anyone knows how to make this cross browser compatible I am all ears!

posted on July 15, 2007  #    by John Waters  Comments [1]
 Thursday, June 21, 2007

You can write your own cmdlet ("command-let") to extend PowerShell in the .NET language of your choice.  You need to write both the cmdlet and a PowerShell snap-in to help install and register the command.  Here's an example snap-in for a "get-food" command  that lists tasty Mediterranean foods (like Falafels):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
using System;
using System.Collections.ObjectModel; // supports Collection
using System.Management.Automation; // supports PSSnapIn
using System.Management.Automation.Runspaces; // supports *ConfigurationEntry
using System.ComponentModel; // supports RunInstaller
using Falafel;

// Project also references System.Configuration.Install

public class FalafelSnapIn : CustomPSSnapIn
{
public FalafelSnapIn()
: base()
{
}

public override string Name
{
get
{
return "FalafelSnapIn";
}
}

public override string Vendor
{
get
{
return "Falafel Software ";
}
}

public override string Description
{
get
{
return "Runs custom Falafel commands.";
}
}

/// <summary>
/// Specify the cmdlets that belong to this custom PowerShell snap-in.
/// </summary>
private Collection<CmdletConfigurationEntry> _cmdlets;
public override Collection<CmdletConfigurationEntry> Cmdlets
{
get
{
if (_cmdlets == null)
{
_cmdlets = new Collection<CmdletConfigurationEntry>();
_cmdlets.Add(
new CmdletConfigurationEntry("get-food", typeof(FalafelCmdlet), null));
}

return _cmdlets;
}
}
}

CustomPSSnapIn knows how to be installed via installutil.exe, contains information about name, vendor, description etc., and has collections of types that can be registered with PowerShell such as cmdlets, Types, Formats and Providers.  FalafelSnapIn descends from CustomPSSnapIn, overrides the Cmdlets collection and adds the "get-food" cmdlet to the collection. Notice that much of the PowerShell specific functionality is supported in the System.Management.Automation namespace.

 Next we'll look at FalafelCmdlet, the implementing class for the "get-food" cmdlet.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
using System;
using System.Management.Automation; // supports PSSnapIn, CmdLet, Parameter

namespace Falafel
{
[Cmdlet(VerbsCommon.Get, "Food")]
public class FalafelCmdlet : Cmdlet
{
private string _contains;

[Parameter(Mandatory = false, Position = 0, HelpMessage =
"List item descriptions containing this string")]
public string Contains
{
get { return _contains; }
set { _contains = value; }
}

protected override void ProcessRecord()
{
MediterraneanFoods foods = new MediterraneanFoods();
foreach (MediterraneanFood food in foods.FindFoods(_contains))
{
WriteObject(food);
}
}
}
}

First the Cmdlet attribute marks this class as a cmdlet and helps formalize the naming convention for cmdlets as being verb-noun combinations.  VerbsCommon lists the verbs that may be used:

FalafelCmdlet descends from Cmdlet but you can also use PSCmdlet.  Cmdlet is lighter-weight but PSCmdlet has more access to the PowerShell runtime. For this example the functionality would be the same so I will go with the lighter-weight Cmdlet.  The Contains property in this example holds a string used in searching food descriptions.  The Parameter attribute marks the Contains property as a parameter for the cmdlet, provides a help string and identifies Contains as not being mandatory.

Finally the ProcessRecord() method of Cmdlet is overridden to perform the actually work of the command.  In ProcessRecord() a class called MediterraneanFoods returns a generic list of MediterraneanFood objects based on description.  We won't get into the workings of MediterraneanFoods here because its purpose is to simply provide sample functionality for the command.  Note: Watch this space for a tasty blog by Lino on Anonymous Delegates that gets into how the generic list is searched.

The really cool part of ProcessRecord() is the WriteObject() method of Cmdlet.  Instead of Console.Writeline() text-only output, WriteObject() actually ouputs MediteraneanFood objects into the PowerShell pipeline.  This means that your objects are automatically usable by other commands.  You'll see this in a minute when we register and run the command. 

Here are the PowerShell commands I use to install and register the cmdlet:

cd C:\Clients\Falafel\Projects\FalafelCmdletLibrary\bin\Debug
set-alias iu $Env:windir\Microsoft.NET\Framework\v2.0.50727\installutil.exe
iu FalafelCmdletLibrary.dll
Add-PSSnapin FalafelSnapIn

The first line changes the directory to where the assembly for the FalafelCmdlet is stored.  Then, as a convenience you can use set-alias to make access to InstallUtil.exe easier.  The "IU" alias for InstallUtil installs the assembly.  This step produces a certain amount of logging I won't include here.  Finally the Add-PSSnapin makes the snap-in available to the current PowerShell console session.  You can call Get-PSSnapin to see the description and verify it's there:

Now we can run the "get-food" command, passing the "contains" parameter.  Notice the output by default is in table format.

Remember the call to WriteObject() that makes all our output actual objects instead of text?  Here's an example of piping the output of the one command that will easily work with an existing command without any adapting or parsing necessary to make it all work.  The "|" character is used to pipe the output from get-food to a format-list:

...and we have the output in list, not table, format.  Or we could pipe the output to the get-member command that performs reflection on objects passed to it.  You can see the MediterraneanFood object has Description and Name properties:

This all opens up possibilities for you to wrap existing .NET functionality in command-line form and to use the output in other existing commands.

posted on June 21, 2007  #    by Noel Rice  Comments [1]
 Monday, May 07, 2007

We recently decided to use Developer Express XtraReports for one of our projects. While it's an impressive product with rich functionality, its design-time support within a web project definitely isn't as robust as it is within a windows project. After some trial and error, I discovered the trick to getting the designer preview tab to work with a parameterized query. Here's how it's done:

  1. In a web project, add a new XtraReport
  2. With the XtraReports designer open, double-click on a DataAdapter. If no DataAdapters are visible in your toolbar (none were in mine by default), you'll have to add them to the toolbar manually.
  3. Configure the DataAdapter using the wizard
  4. In the property grid, navigate to the DataAdapter's SelectCommand | Parameters property. Use the Parameters dialog to set a default value for each parameter. This will enable the report to execute the command at design-time.
  5. Select "Generate DataSet" from the DataAdapter's context menu. In the dialog that appears, make sure to check the box that says "Add this dataset to designer."
  6. The report's DataSource, DataMember, and DataAdapter properties should already be set correctly. Click on the report and examine the properties to confirm.
  7. Try adding a few fields to the detail band of the report, then click the preview tab. After a short delay, the preview should appear!

This approach uses DataAdapter classes directly. The default adapter created by Visual Studio if you create the DataSet first and then add a table will be a TableAdapter. TableAdapters will not work with this approach, because they have no facility to set default parameter values at design time. Unfortunately, the only adapters that appear in the XtraReports' DataAdapter property editor are TableAdapters. However, if you click in the grid and start typing the name of your DataAdapter, the property grid will locate it and assign it to the property correctly.

posted on May 7, 2007  #    by Adam Anderson  Comments [0]
 Sunday, May 06, 2007

I recently ran into an unexpected behavior of SSRS while writing a complex report. The report required various calculations that would refer to specific previous groups and details, and I had decided to solve the problem by writing a custom report function that would evaluate on each detail row, saving the information I would need later in a dictionary. My solution worked fine, as long as my custom calculation in a group footer didn't depend on the contents of that group's details. Upon further investigation, I learned something very interesting about the order in which SSRS evaluates group headers, footers, and details...

Here is how to observe the behavior for yourself: create a stored procedure like this one, that generates some simple test data:

CREATE PROCEDURE dbo.HundredRows
AS
SET NOCOUNT ON

create table #result (
id int,
grp int
)

declare @id int
set @id = 1

while @id <= 100
begin
insert #result
values ( @id, ( @id - 1 ) / 5 )

set @id = @id + 1
end

select *
from #result

This will return a result set whose id column increments in steps of one from 1 to 100, and whose grp column increments in steps of one for every five rows. Next, create a simple report layout with a table, showing the values of each column and grouping by the grp column. In the group header and footer, include the same column references. Next, add this custom code:

Dim eval_order As Integer = 0

Public Function show_eval_order() As String
  eval_order = eval_order + 1
  Return eval_order.ToString()
End Function

Display the result of this function in the group header, footer, and detail rows. Your layout should look like this:

Once you have the report set up, click on the preview tab to see the surprising results:

I've only shown the first two groups here, but notice what has happened! The order column clearly indicates that the group header and footer are both evaluated before the details in between! By looking at the value of the id column in the footer, we can see that the the group's header and footer rows are printed while the "current" row in the dataset is still positioned on the first row in the group.

While this is interesting, it isn't very important as long as you stick to using SSRS's built-in aggregation functions. It is only when you attempt to "roll your own" by saving the dataset in your own storage for later reference that you might run into trouble. In my case, I used the following workarounds:

  1. Move calculations that rely on the details having been traversed from the group footer to the following group's header. It's clunky and less intuitive, but that's what SSRS has forced upon us.
  2. For the final group, move the calculation out of the table entirely, and put it into textboxes just below the table. While there is no way to tell SSRS to evaluate the textboxes after it evaluates the table, it does so at least for the 2005 version.

In summary, it sure would have been nice if SSRS would have evaluated group headers and footers after it evaluated the details that each group contains, but since we have clearly demonstrated that it doesn't, we now know what we will have to do in order to make custom report code produce the output we want: by putting those custom calculations into the following group's header, and by putting the final footer calculation outside the table entirely.

posted on May 6, 2007  #    by Adam Anderson  Comments [1]
 Tuesday, April 17, 2007

You might overlook the JavaScript debugging utility that's already built in to Visual Studio 2005: the Script Explorer window.  The Script Explorer can take care of the usual debugging tasks like stepping through code, adding watches and evaluating variables. 

To use the debugger in Internet Explorer navigate to the browser Tools | Internet Options | Advanced tab and make sure that "Disable script debugging" is turned off. 

Run your web application in Visual Studio 2005.  Then select the menu option for Debug | Windows | Script Explorer.  Notice in the background the tags for telerik RadEditor controls...

The first thing you notice in the Script Explorer window is a series of JavaScript and resource files that are currently loaded.  Double click on the aspx file you're currently working with and you will see the evaluated HTML returned from the server.  The RadEditor control now shows as its computed HTML, CSS and JavaScript that will actually be functioning in the browser. 

You can also navigate up to the script for the page and set breakpoints and watches.  When the JavaScript executes and hits your breakpoint you get all the usual Visual Studio debugging capabilities for free.

Next blog I'll show the excellent "Firebug" debugging utility for Firefox.  Firebug doesn't stop at just JavaScript but works with the entire stack of AJAX related technologies (and has a high cool-factor).

posted on April 17, 2007  #    by Noel Rice  Comments [0]
 Wednesday, April 11, 2007
A nice blog post highlighting some aspects of Haskell and the new functional elements of C# 3.0 http://themechanicalbride.blogspot.com/2007/04/haskell-for-c-3-programmers.html
posted on April 11, 2007  #    by Adam Anderson  Comments [1]
 Tuesday, April 03, 2007

When I first installed Windows Vista I was a little worried that I would not be able to use all my development tools, like Microsoft Visual Studio 2005 and Microsoft SQL Server Management Studio, so I wanted to install an XP virtual machine just in case. I soon found out that the only version of Microsoft Virtual PC that would run on Vista was a beta of Virtual PC 2007, so I installed that, and it actually worked nicely.

Well, now the release version of Virtual PC 2007 is here. You can download the full version for free from the Microsoft Download Center. I downloaded it and installed it (you need to uninstall the beta version first – don’t worry, your virtual machines are left intact).

VPC 2007 runs on most host Windows versions, all the way back to Windows 98. It can of course host Vista, so this is a great way to start testing Vista and application compatibility in a sandbox environment.

posted on April 3, 2007  #    by John Waters  Comments [1]
 Tuesday, February 06, 2007

If you use Windows Vista and are like me, you have already turned off those annoying prompts generated by User Account Control (UAC). But can you really just turn it off?

Well, it turns out that you can't. I went to install Adobe Acrobat Reader 8.0, which is Vista compatible. After downloading the file I set about installing it, only to be informed that "The Temp folder is on a drive that is full or is inaccessible."

Some googling turned up this Tech Note on Adobes site. According to this note "On Vista, with User Account Control disabled, there is no write and execute access to the %TEMP% folder". Now isnt that amazing? Microsoft actually turns off access to the TEMP folder if you dont want to use its lousy UAC! I can't believe it!

There are some extremely annoying time consuming work arounds that are detailed in the Tech Note, which entail interrupting the installation half way through, copying files to another location, then running from there... The easist fix is to turn on UAC, reboot (required), run the install, turn off UAC, reboot (required) and there you go!

So thanks Microsoft for adding UAC and then crippling the machine when you turn it off. Very thoughtful.

posted on February 6, 2007  #    by John Waters  Comments [0]
 Monday, February 05, 2007

The full text of the error reads: "Commit failed. (details follow): 'pre-commit' hook failed with error output: all was unexpected at this time." I've run into this error when trying to commit files in Subversion (with TortoiseSVN) at least twice. At first, I thought it was caused by some obscure state error. I tried doing a cleanup on the directory, and then on the parent directory, with no success. I tried deleting the entire project and downloading it afresh from the repository. Nothing worked, until my associate Noel asked me what comment I'd used. It was then I realized that my comment contained double quotes. I replaced the double quotes with single quotes, and the commit worked without a hitch. In a way, it's a relief to know that I don't have to worry about any of my projects getting into a weird state where I can't commit anything, but on the other hand, it's a little troubling to think that my comment text apparently isn't getting escaped.

posted on February 5, 2007  #    by Adam Anderson  Comments [0]
 Wednesday, January 24, 2007

.NET 3.0 has a number of command line utilities like the service utility (svcutil.exe) that can be awkward to run if you're already in Explorer, deep in a folder structure.  Phillip's svn blog reminded me of a trick with the registry to get the command prompt window populated with the current path.

30netprompt.gif

You can use this technique for any command line or batch file you want to attach to the Explorer context menu. 

  1. Add a key (any name and content appears to work) to HKEY_CLASSES_ROOT\Folder\shell.
  2. Below that add a key "command" and set the text to be whatever command you want executed.  I copied the command line from the .NET 3.0 SDK "CMD Shell" (see registry export listing below), but you could use any command line entry.  The nice thing about the .NET 3.0 cmd shell is that it sets the environment so you can access svcutil.exe and other 3.0 specific utilities.

Registry export listing:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Folder\shell\Command Prompt]
@=".NET 3.0 Command Prompt"

[HKEY_CLASSES_ROOT\Folder\shell\Command Prompt\command]
@="C:\\WINDOWS\\system32\\cmd.exe /E:ON /V:ON /T:0E /K \"C:\\Program Files\\Microsoft SDKs\\Windows\\v6.0\\Bin\\SetEnv.Cmd\""

Built in to Windows Vista

If you're running Vista then you're in luck, it's built-in!  Check out this article showing how to shift-right-click a folder to get the "Command Prompt Here" context menu item:

http://blogs.msdn.com/tims/archive/2006/09/18/windows-vista-secret-1-open-command-prompt-here.aspx

posted on January 24, 2007  #    by Noel Rice  Comments [1]
 Monday, January 22, 2007
Confused as to how you set up synchronization with your PDA in Vista? I was... here is what I found.
posted on January 22, 2007  #    by John Waters  Comments [1]
 Wednesday, January 10, 2007
Find out about a new network protocol from Microsoft that draws neat maps of your network on your Vista machine, and how to make it work play nicely with XP machines on your network…
posted on January 10, 2007  #    by John Waters  Comments [1]
 Tuesday, December 05, 2006

So I recently discovered programming.reddit.com, a site that lists the latest and greatest programming articles and blogs that other people have read and rated, and I noticed a trend: a lot of the articles are about functional programming languages. This piqued my curiosity. After all, what's the big deal? I learned some Scheme in college, and it was weird compared to programming in an imperative style. Besides, functional languages don't even have objects, so they don't have the same power of abstraction, right? (wrong, and wrong again.) Well, since then, I've read several fascinating articles on the advantages of functional programming languages, and this article was one of the best. Then I learned that Microsoft is researching a functional language for .NET, and that many of C# 3.0's features were lifted from it.

So now I'm wondering, will functional programming become the way of the future? I've decided that it's important enough to acquaint myself with functional programming techniques. I surveyed many functional languages, trying to decide which one to choose.

I want to learn F# eventually, but I don't want it to be my first functional language, because it allows a mixture of functional and imperative programming, and while that might be a powerful combination once I'm fluent in both styles, I don't want to be tempted to fall into familiar imperative patterns while I learn this new style of programming.

Clean looks pretty nice; it performed admirably well for a functional language in the Computer Language Shootout, and it even has its own IDE written entirely in Clean! It is a modern language, but its development and usage isn't as widespread as Haskell's, below.

At long last, I come to Haskell. Haskell is a pure functional language, so I won't have the crutch of imperative programming to fall back on. It was designed to be an open standard, consolidating existing functional languages into a common one as a basis for future language design, which also means that it will be an epicenter of new language developments. While the project to create a Haskell IDE written in Haskell is still underway, there is a Haskell plugin for Visual Studio, which is still pre-release, but the author feels that it's getting close.

In the end, I've decided to pursue learning Haskell first, and then probably F#. If I have any great epiphanies, either for or against functional programming, I'll be sure to post my thoughts here.

posted on December 5, 2006  #    by Adam Anderson  Comments [1]
 Thursday, September 28, 2006

Many companies are moving away from constantly building applications from scratch, and instead focusing their development on  building a reusable and testable framework to encapsulate their business rules.  Their frameworks are then used to quickly produce custom apps, webservices, components, etc. It is sort of like building a house. First they build a solid foundation, and then build on top of that foundation whatever structure they may need. If you are part of a team about to head down this path, I would strongly recommend a few of my favorite resources, to make sure you get the foundation right the first time.

Early in 2005, Brad Abrams had a 15 part webcast on "Designing .NET Class Libraries". Its now archived on MSDN, but I dug up the link so you don't have to: https://msdn.microsoft.com/netframework/programming/classlibraries/

Soon after the series was complete, he and Krzysztof Cwalina released a book called "Framework Design Guidelines". The book sums up what you might see in the webcast, and if you decide to take a stab at building your own framework, I would consider it required to have on hand.

posted on September 28, 2006  #    by Mike Dugan  Comments [1]
 Monday, April 24, 2006

While browsing the web today, I came across a recommendation for Foxit Reader as an alternative to the more well-known Adobe Acrobat Reader. After downloading it and trying it out, I am happy to report that my first impressions of the product are very positive. Some of my biggest causes for discontent with Adobe Acrobat were the sluggish loading times and persistent nagging to upgrade, and both of these are a thing of the past with Foxit. Now when I double-click a PDF file, it opens in the blink of an eye! Farewell, Acrobat. Your slowness and nagging won't be missed.

posted on April 24, 2006  #    by Adam Anderson  Comments [0]
 Wednesday, February 22, 2006

Danc of Lost Garden has written many interesting and thought-provoking articles, mostly about game design. Today's article, however, is wider in scope, addressing the evolution of product design, and is well worth the read.

posted on February 22, 2006  #    by Adam Anderson  Comments [0]
 Saturday, February 18, 2006

Krugle is a search engine for source code that is supposed to make life easier for us developers. You can sign up for the Beta on their website and try it out sometime next month.  http://www.krugle.com/

posted on February 18, 2006  #    by Mike Dugan  Comments [1]
 Monday, February 06, 2006

Is Courier New just not doing it for you anymore? This page summarizes and rates different fixed-width fonts based on their suitability for use in a programming environment. The reviewer evaluates several factors including how easily the characters 'l', '1', and 'i' are distinguised, as well as the characters '0', 'o', and 'O'. After browsing several of the handy font previews, simply follow the associated link to download your new favorite programming font. The top-rated font, Bitstream Sans Vera Mono, looks great without ClearType and awful with it, so if you have font smoothing enabled, I recommend you look further down the list for something that plays better with ClearType

posted on February 6, 2006  #    by Adam Anderson  Comments [1]
 Friday, January 27, 2006

Being able to compare the results of two different SQL queries and verify that they match 100% is a useful ability for any database application developer. I've encountered two main reasons for wanting to compare query results in the course of development:

  1. After importing data from an older system, verifying that equivalent reports in the old system and the new one agree
  2. When refactoring a complex query, to verify that the changes made haven't altered the output

In both cases, I find it convenient to run data comparisons of queries run in SQL Server Query Analyzer by using MS Excel. The technique is simple, but the payoff is huge: 100% confidence that every row and every column matches. Here are the steps I use:

  1. Create a new 3-page workbook and rename the tabs "Old", "New", and "Compare" 
  2. Hand-enter column names in the top row of each worksheet. I like to make them bold and underlined so Excel can tell that they're headers. 
     
  3. Run the "old" query in Query Analyzer. Once the results come back, click in the result pane and select all using Ctrl+A or Edit | Select All
  4. In the "Old" worksheet, select the leftmost cell in the row under the header and paste the results.
  5. Repeat the same steps for the "New" query and worksheet.
  6. If the queries don't explicitly set their own sort order, I recommend sorting both the "Old" and "New" data in a way that should guarantee that they are ordered the same on the two worksheets.
  7. In the "Compare" worksheet, enter the following formula in the leftmost cell under the header row: =Old!A2=New!A2. This formula will return TRUE if the cells match, and FALSE if they don't. 
  8. To make mismatches easier to spot, I like to apply some conditional formatting as well.

    1. Select the cell and then select Format | Conditional Formatting...
    2. Set up the condition so that it reads "Cell Value Is" "equal to" "FALSE"
    3. Click the Format... button. On the Patterns tab, select a nice bright color that will stand out, like red. Click OK.
    4. Click OK on the Conditional Formatting dialog
  9. Select the span from this initial cell to the rightmost column in the result set and press Ctrl+R or Edit | Fill | Right.
  10. Check the "Old" and "New" worksheets and note the number of the last row containing query results.
  11. In the "Compare" worksheet, select all the cells that contain data in the same row and column on the other two sheets and press Ctrl+D or Edit | Fill | Down.
  12. Differences in data will result in a value of FALSE (optionally highlighted if you used conditional formatting). The values can be scanned for visually, or you can use the Find dialog to search for them. When using the Find dialog, make sure to click the Options button and change "Look in" from "Formulas" to "Values" 
  13. Once differences are found, the old and new data can be examined to determine the cause for the difference.
posted on January 27, 2006  #    by Adam Anderson  Comments [0]