UPDATE (Mar 20, 2013): Icenium v1.3 was released yesterday with the ability to target iPhone or iPad only on iOS, one of my suggestions below. Thanks, Telerik team!


I'm just wrapping up my first project using Icenium, Telerik's cloud-based IDE for creating Android and iOS apps using HTML5, CSS3, and Javascript. I must say that it's been a very enjoyable experience and I've been very impressed with the product that our friends at Telerik have created.

It's a bit unfair to do a full review of this product yet, since it's so new and still in v1. ...
When working with existing sites or content management systems, you have little say on where and when jQuery is loaded. To complicate matters, some pages may have jQuery auto-loaded, and others may not (yay for performance boosts, nay for client-side plugins). Do you bite the bullet and write unmanageable scripts? Or do you believe in RequireJS and dodge the bullet matrix-style? Let me show you how.

With RequireJS, you can asynchronously load JavaScript files when needed. For example, you can write a simple JavaScript module that depends on jQuery like this:

], function ($) {
Building our EventBoard mobile solution for conferences was no easy task. The solution includes native applications for iOS, Android, Windows Phone and Windows 8, Windows Azure cloud services, a web based administration portal, and a separate product website.

Thankfully, we were able to use the tools from Telerik in nearly every facet of development. The tools saved us time and money, and now Telerik has featured our development story in a detailed case study. You can read all about what it took to build EventBoard here.
Entity Framework makes it very easy to get data from your database through mapped entities and having foreign keys mapped as navigation properties makes it really easy to traverse relationships in your database.  However, there is often a lot of overhead if you "include" your entire child entity along with the primary, parent entity.

For example, let's say we have an Order entity and each Order has a non-null ShippingAddressId that gives us a 1..1 to the Address entity.  We can use Include() to return that related Address entity:

public void IQueryable<Order> GetOrders(
    return this.ObjectContext.Orders.Include("Address");...
In a previous post, I showed how to create JavaScript widgets in Sitefinity using shared content blocks. This enabled you to create widgets like image carousels and blog rotators on-the-fly without having to compile or deploy. It was so useful in production and we received a lot of good feedback from the community. This is why we felt it deserved to evolve more and began creating a full-fledged Widget Builder for Sitefinity!

The idea is simple… when writing a web-based widget or control for a website, you need a mixture of HTML, CSS, and JavaScript. A portion sometimes goes ...
While developing web applications, it is common that you must test the site in SSL mode. Normally, this would be a pain and would require you to set up the site in IIS manually. From then on, you must attach the debugger in Visual Studio to the application pool process. There's an easier way!

IIS Express has been given a lot of attention with the Microsoft 2012 tools and it is certainly a better alternative to Cassini. And yes, IIS Express really is the full-fledged IIS except the config files are located in "C:\Users\%USERNAME%\Documents\IISExpress\config" rather than in the machine-wide location. ...
Capitola CA - 18th February, 2013 - Today Falafel Software is pleased to announce that two additional Sitefinity experts are joining the team: Jochem Bökkers and Josh Morales. Jochem and Josh are two of the most respected names in the Sitefinity development community and each brings in-depth Sitefinity knowledge and their own unique technical expertise to the Falafel family.

“It is a pleasure and an honor to add two established software engineers to the Falafel family.” said Lino Tadros, Chairman & CEO of Falafel Software. “Josh and Jochem are hard core Sitefinity architects that will be a tremendous help to ...
Navigation is one of the most important functions in any CMS. It is the doors you scatter throughout your site so your visitors can get around. It is no wonder there is an entire eco-system of menus... drop downs, horizontals, verticals, responsive design, tabs, panelbar, tree-view, content slide-outs, and the list keeps growing. This is one the most common requests for any web designer or developer. Just search the Sitefinity forums and you will see :)

The problem with using the Sitefinity navigation widget is that you have little control over the HTML that is rendered for the menu. ...
Falafel Software’s mobile conference solution EventBoard, has been chosen as the official application of the Microsoft MVP Summit.

The Microsoft MVP Award is given to technical experts who actively participate in the community, sharing both their knowledge and enthusiasm for Microsoft products. For 20 years, it has remained one of the most difficult awards to earn and wearing the badge of an MVP has signified supreme technical excellence with Microsoft technologies.

Each year, every MVP from around the world is invited to Microsoft headquarters for the MVP Summit. This private event gives MVPs early and direct access to ...

For years I've always liked the idea of having the ability to develop on the road. Few who know me would ever deny that I'm a true road warrior, although I'm beginning to slow down. Whether it was taking my kids all over the world to fence, chasing storms, hiking off the trail, or even jet skiing at the lake, I often had my laptop with me. I've come up with some of my best ideas while on the road. However, the size and bulk of my various laptops always had me wishing for something else.


The Surface RT ...

If you are like any other coder, cutting and pasting snippets should put up a red flag in your mind. You will quickly hit this threshold when creating CRUD-services for MVC 4 applications over and over again. This lead me to create a repository pattern using generic types and base controller classes that I would like to share with you. In the end, below is how my Web API classes look like, which automatically give me create, retrieve, update, and delete functionality:

using MvcWebApp.Helpers;
using MvcWebApp.Models.Data;
namespace MvcWebApp.Api
    public class SpeakersController : BaseApiController<Speaker>
        //THIS ...
For the sake of example, imagine a database of books. Books can have a Publisher, but not all books have been published yet, so those books do not have a Publisher. In the database, this would be represented by a nullable FK column, and the EF model would include a navigation property called Publisher from Books to Publishers. Let's say you want to write a query over a data service that returns a list of book names and publisher names. A naive query would start off like this:
var query =
    from book in DataServiceReference.Context.Books
    select new {Title ...
Since late 2012, Microsoft has been offering access to an Windows Azure-hosted Team Foundation Server (TFS) which they branded as "Team Foundation Service". At the beginning of the year, they took (most of) this service out of beta and announced that it would stay free for teams of 5 or less. The pricing for bigger teams hasn't been announced yet, and remains free currently, and is likely to be very affordable going forward.

For a lot of companies, Falafel included, this is a very compelling option. This service already gives you all the benefits of a cloud-hosted source control repository: ...

Wow, I can't believe 2012 is gone already, not only that, but January of 2013 is over.  January has been a tremendous month for the company, the best January ever in the 10 years history of Falafel Software Inc.

We started the year very strong with multiple new accounts in the USA, Europe, Far East and Australia.

FalafelCON2013Sitefinity continues to be a very strong business for Falafel and we continue to assemble the best Engineering team in the industry to meet the consulting and architecture demands for our Sitefinity Business.  Great announcements coming soon!

SmartBear's relationship continues to flourish ...

As a C# developer, I have taken for granted the convenience of being able to navigate to a definition and then click the back button on my mouse to return to where I navigated from. When I started working on a VB.NET project in VS 2010, the mouse button no longer worked the same way. After searching the web, I was shocked to learn that this was a C# feature only, and that VB.NET, F#, and C++ do not support it! The good news is that there is an addin that can restore this functionality, but there is a catch, ...

In my last blog post, Using Generic Attached Properties to Simplify Windows 8 Settings Charm Pages , I talked about how to easily add Settings Charm pages to any Windows 8 app. If your app happens to have an AdControl, you might have an issue that you need to handle. The issue is that AdControl is hosted in a WebView Control, which causes the control to always be on top. When flyout Settings Charm pages overlap AdControl elements you get unexpected behaviors. It's a known issue but is easy to handle. I've updated the GitHub example to include a couple of ...
Falafel Software is pleased to announce FalafelCon 2013, the new annual training conference for software developers.

Capitola CA - 29th January, 2013 - Falafel Software’s new annual training conference, FalafelCon, will take place at Microsoft’s Silicon Valley Campus on June 10 and 11th, offering software developers four co-located events and 40 technical sessions to choose from.

FalafelCon’s four co-located events include Web and Mobile specific events that explore cutting edge software development techniques with Microsoft development tools. Advanced development topics include Azure tips and tricks, cross platform mobile development, NFC with Windows Phone, Windows 8 sensor integration and ...
We take quality seriously. Up until now, if you said the word “bug” in the halls of Falafel Software, you had better be whispering.

So just imagine how much fun it was to build an app that was full of bugs. Of course, we’re not talking about programming bugs, but the kind of bugs that can scurry all over your screen and give anyone looking over your shoulder the creeps.

This new Windows 8 app wasn’t just for fun either, this bug invasion is smart. You can set the size of the swarm and these intelligent little creatures can tell ...

I’ve always liked attached properties… so much so that a couple of years ago I created a series of generic classes to simplify the process of creating custom attached properties.

Attached Properties – a review:

  • External control interactions — like the Grid.Row attached property.
  • Basic info storage — just like the Tag property.
  • Behaviors — changing properties and behaviors of the parent control.
  • Bindings — to achieve custom bindings between UI controls.
  • If you use XAML, you use attached properties whether you realize it or not.

Creating a custom attached property only takes a few lines of code. Many declarative ...

The web users of today expect a modern experience that only a single page application can deliver. Page refreshes are a thing of the past. Waiting for anything longer than 2 seconds without a "cool effect" is not acceptable. Responsive design for tablets and smartphones should just work.

These demands of the new era have spawned new ways to develop JavaScript applications. For modern, scalable, and extensible JavaScript applications, two techniques are on the forefront: MVC patterns and AMD design. For this demo, we will be using RequireJS for AMD modular design and CanJS for MVC.

By the way, I ...