How to Build the NodeMCU Firmware using BoUoW

By | ESP8266, IoT, Linux, Windows | No Comments

This is post 13 of 13 in the series “IoT with the ESP8266” The Windows 10 Anniversary Update includes the Windows Subsystem for Linux, as I had mentioned in a previous post. The Bash shell (succinctly named “Bash on Ubuntu on Windows”, or BoUoW if you’re actually trying to search for information) permits native Linux ELF64 binaries to run on Windows. It’s pretty clever, but a little limited in areas. So, I wondered: since Linux is the preferred first-class build environment for ESP8266 firmware, can I build the NodeMCU firmware using BoUoW? Let’s find out! First, you will need to activate the feature and install BoUoW….

Read More

QuerySelectorAll Error on BeginFormSitefinity

By | ASP.NET, MVC, Sitefinity | No Comments

When developing a custom form on Sitefinity MVC widgets, the HTML helper method Sitefinity provides, Html.BeginFormSitefinity(), is a very handy resource. You wrap your form elements up inside the whole thing, along with a submit button, and you can point it at an HttpPost Action on your custom MVC widget controller with ease. When you’re putting your form widget on a master page, however, you can run into a rather vague JavaScript error that prevents your form from submitting correctly. The error in JavaScript brings up something about querySelectorAll and you’re left scratching your head as to what you did…

Read More

Add A Small LCD Display To Your Raspberry Pi

By | IoT | No Comments

Recently, I needed to put together a Raspberry Pi-based solution to run a Node.js app. I didn’t need Windows IoT Core or X-Windows – just a Linux TTY would do. But, I also wanted to include a LCD display to eliminate the need for a HDMI monitor.  Was it possible? Selecting and Configuring Display Hardware A quick search of the internet reveals many 3.5 inch screens for the Raspberry Pi. In fact, there are many different screen sizes available, but the 3.5 inch matches the footprint of the Pi itself. These are typically TFT displays with an SPI interface that plug into the Pi’s…

Read More
Software PWM at 0.35 Duty Cycle

Windows IoT Core: Software PWM

By | C#, Hardware, IoT, Microsoft, Raspberry Pi, Visual Studio, Windows, Windows Universal Apps | No Comments

One of the gaping holes in my opinion is the availability of PWM when working with Windows IoT Core on the Raspberry Pi. There are two approaches to solving this problem, one is with additional hardware to provide PWM functionality, the other is to achieve PWM with software. This article will focus on Software PWM. A Convenient Software PWM Library In poking around the web, I stumbled across this convenient library for Windows IoT Core. One of the implemented functions in this library is support for Software PWM. This library is also available as a package through NuGet. To demonstrate…

Read More
HoloLens image

Using HoloLens Toolkit to Deploy Your App

By | HoloLens, Unity | No Comments

This is post 3 of 3 in the series “Rummaging Through the HoloLens Toolkit” Using HoloLens Toolkit to Deploy Your App The Build Window for HoloLens Toolkit brings together scattered tools and processes. Now you can build, create an “APPX” package and deploy directly to a HoloLens device. This approach makes it easier to see all the steps in the process, all in one place. The SLN builds a new Visual Studio solution. The APPX group creates a package with the *.appx file, dependencies and manifest. The Deploy options let you target a device and install the package. The install through USB cable…

Read More

Enable Sitefinity Page Editing for Custom Roles

By | Sitefinity | No Comments

Page Editing: Just Assign the Right Roles. Right? I recently worked with a client that was setting up users in the Sitefinity backend under custom roles. Some users can edit one group of pages, while other users can edit other groups of pages. Setting up these groups of pages with the permissions so that group A can edit while B cannot, and vice-versa, is trivial. …But is that all we do in order to give users the page editing powers we wish to grant them? Nope! In attempting to complete this setup, the client was running into an issue: Despite…

Read More

Best Windows Git Client Redux

By | git | 7 Comments

It’s been over a year since I last wrote about Git tooling in the Windows ecosystem including my opinion on the best Git client for Windows. Here are some new clients I’ve tried since the last post and what I think of them. GitHub Last time I wrote about the GitHub client for Windows, I said I didn’t like it and that I found it bare of virtually any functionality at all. Since then, I read a post claiming that they (the creators of the program) wanted to make it the greatest client for Windows, so I thought I’d give…

Read More

Simple Key-Value Sitefinity Configuration with NameValueCollection Property

By | News, Sitefinity | One Comment

Sitefinity allows you to easily create a custom configuration setting for storing and managing properties for your site. For the most part, you simply need to inherit from ConfigSection and add your properties. Once registered your settings will be automatically added to the backend Sitefinity Configuration page (Administration > Settings > Advanced). The documentation for this feature explains that there are several different types of properties supported, including simple types (like bool, string, etc.), as well as custom types that you can create by inheriting from ConfigElement and even collections for managing those custom types. However, one additional property type…

Read More

Kendo UI Combobox Customized: Previous Value Restore

By | JavaScript, Kendo UI | No Comments

Today I want to share a little Kendo UI Combobox customization, one that I hope you’ll find useful: restoring the previous value on an invalid entry. Often we see validation, especially numeric validation on a range for example, use coercion to simply force the value to either the highest or lowest number. This certainly prevents invalid entry, but the user experience isn’t all that great in every scenario. What may be preferred, for an allowed range of 0-10, and if the user intends to change a 3 to a 4 and instead accidentally enters 44, would be to just restore the value of 3 (not coerce to 10).

Read More
HoloLens image

Using HoloLens Toolkit to Configure Your App

By | HoloLens, Unity, Visual Studio | No Comments

This is post 2 of 3 in the series “Rummaging Through the HoloLens Toolkit” Using HoloLens Toolkit to Configure Your App HoloLens Toolkit makes short work of configuring a Unity application for deployment. No need to pick your way down the checklist. This video walks you through the toolkit menu options. To make your project HoloLens-ready, run the Apply HoloLens… Scene Settings positions the camera, makes the background transparent, and sets field-of-view properties to match the HoloLens environment. Project Settings creates a Visual Studio solution and changes the project build options to target a Universal Windows app that HoloLens can run….

Read More
HoloLens image

Get Started with HoloLens Toolkit in Unity

By | HoloLens, Unity | No Comments

This is post 1 of 3 in the series “Rummaging Through the HoloLens Toolkit” Get Started with HoLolens Toolkit in Unity There’s a lot to explore in the HoloLens Toolkit for Unity. In this video, we first download the toolkit and load it into Unity. Then we export the toolkit as a package, and finally, import the toolkit package to another project. Along the way, the video demonstrates how to resolve this error: “unsafe code requires the ‘unsafe’ command line option” If you don’t have Unity, download it here. The Unity download is a custom build that targets HoloLens. Get the latest HoloLens toolkit…

Read More

Falafel Releases ZombieSmack, a Free Game for Microsoft Hololens

By | HoloLens, Microsoft, News, Windows | 3 Comments

At Falafel, we’re always in the mindset that we need to innovate and test the boundaries and possibilities of new technology. So, when Microsoft announced the release of the HoloLens, we  just had to get our hands on it and start developing for it. And so we did… Announcing the release of ZombieSmack, the first HoloLens game from Falafel with many more to come. If you own a HoloLens, you can download and play ZombieSmack for FREE. For those of you who do not have a HoloLens, ZombieSmack is our take on the old school arcade game whack-a-mole game and since Halloween…

Read More
Experimental Decorator Warning

Suppressing Experimental Support for Decorators warning in VS Code

By | Angular 2, JavaScript, Mobile, NativeScript, TypeScript | No Comments

When working with TypeScript and Angular 2 in VS Code, you may encounter an Experimental Support for Decorators warning on some of the decorators you wish to use in your code. While it doesn’t affect the compilation or functionality of the application, it is a tad annoying to look at. In this example, I’m working with a NativeScript application.  Here are a couple steps to take in order to suppress this warning. Set the Experimental Decorators Property The first step in suppressing this warning, is to set the “experimentalDecorators” property to “true” in the TypeScript configuration file in the root of the project…

Read More
What Branch Am I On?

What Branch Am I On?

By | .NET, git | No Comments

When working on a project that is leveraging source/version control with branching it is always a good practice to know which branch you are currently on.  There is nothing worse than getting in the coding groove and an hour in thinking “What branch am I on?”, only to find out you are coding directly against master/release.  Of course your version control system of choice has a mechanism for letting you know what branch is active.  How this is accomplished will vary by system and, more likely than not, will require you to leave your beloved IDE.  There must be a…

Read More

Solved: Adding an Office 365 Email Account to Outlook 2016

By | Office365 | No Comments

Today, as part of repaving my laptop, I decided to install Office 2016. Everything was going fine until I tried to add my Office 365 email account to Outlook 2016. It seems that Auto Discover is now a requirement for Exchange email accounts – there is no longer a way to manually configure servers. And, for some reason, the Auto Discover process hung while trying to discover the server settings for my email (eventually erroring out) After a frustrating two hours of troubleshooting, I came across this blog post with a solution that worked for me: In my case, I added three DWORD registry…

Read More

Angular.js: Configuration for Two Environments within one Project

By | AngularJS, node.js | No Comments

One of our recent projects is an Angular.js app that uses Node.js/Express as the application server. During development, we create feature branches that are merged into a “develop” branch for integration testing. Then, the we merge the “develop” branch into the “master” branch for production deployment. One issue that we had to solve was how to keep environment-specific config in source control. That is, our Angular app needed to know the URL for its API server, and the API server for development was different than production. The first attempt was to maintain one version of a config file in the “develop” branch, and a different version of that…

Read More

A Rise in Demand for Xamarin Consultancy

By | Xamarin | No Comments

Since the Microsoft Acquisition of Xamarin, Falafel has seen a major uptick in demand for services on Xamarin Technologies and in the last 3 months, 4 major corporations have hired Falafel to architect and implement Xamarin based solutions for over $1,000,000 in services revenues. When we first heard that Microsoft was acquiring Xamarin back in February this year, we at Falafel Software were both excited and curious. The team here has always loved Xamarin and we are all Microsoft Certified Professionals so this partnership made sense as we work with technologies from both companies. The surprising aspect was since the…

Read More

Widget Template Code Customized the Easy Way

By | .NET, ASP.NET, C#, Sitefinity | No Comments

Sitefinity’s Widget Templates provide a quick and easy way to change how Sitefinity renders widgets, both for built-in content types as well as custom ones. In the backend, it’s just a hop, skip, and a jump away to Design > Widget Templates to access a majority of the templates where you can manipulate the HTML used to render them. Oftentimes, though, you have to do more. Let’s say that, when iterating over a list of news items in the “Titles only” template you want to add a CSS class to some of the items, but not others. This goes beyond…

Read More
Two Wheel Robot on the floor

Windows IoT: Basic Control of a Two Wheel Robot

By | C#, Hardware, IoT, Raspberry Pi, Windows, Windows Universal Apps | One Comment

In my last article, we utilized a Raspberry Pi running Windows IoT Core to bi-directionally control a single DC motor with the help of the L293D chip. In this article, we will take things a bit further and have the L293D chip control two motors placed on a chassis to create a Two Wheel Robot. Materials Raspberry Pi 2 running Windows IoT Core Pi Cobbler with Ribbon Cable (optional) L293DNE chip Adafruit 2 Wheel Robot Chassis Kit (contains 2 DC motors) One 4xAA battery pack (to power the motors) Breadboard Various M-M Jumper wire   Wiring Details Wiring Details Cobbler 5v…

Read More

Database Change Management With SQL and BAT Files

By | SQL Server | No Comments

Intro In my previous post I gave an overview of some different approaches to database change management that I’ve had personal experience with, finishing with a teaser about a new strategy that I cooked up for a scenario where I wanted something easy to manage without needing to install anything on the target machine. Using a combination of SQL and BAT files, this strategy is pretty bare-bones, but offers complete control over how scripts are applied, so it has a certain minimalist appeal. It also does not rely on a schema version table, but instead just queries metadata to decide…

Read More

Database Change Management Strategies Compared

By | SQL Server, Visual Studio | 2 Comments

Intro It is a challenging problem to manage database change in any project that uses a database. In this post, I’ll recap some of the approaches I’ve tried in the past and what I like (or don’t like) about them; then in the next post I’ll describe a new one that I recently composed with one BAT file and multiple SQL files and have been quite pleased with. This post assumes that the target database is SQL Server. Some of the techniques described could be modified to apply to other databases, and some are vendor-specific. Comparison of Database Change Management Strategies Monolithic Upgrade Script The…

Read More
Single DC Motor Control Wiring Diagram

Windows IoT : Bi-Directional DC Motor Control

By | C#, Hardware, IoT, Microsoft, Raspberry Pi | No Comments

In many IoT scenarios, it is possible that automation will be required to physically move something. In order to do this, you will need to utilize some type of motor. In this example, we will control a single DC Motor using the L293DNE chip and the Raspberry Pi 2 running the Windows IoT Core operating system. Materials Required Raspberry Pi 2 running Windows IoT Core Pi Cobbler with Ribbon Cable (optional) L293DNE chip DC Motor (6v motor) One 4xAA battery pack (to power the motor) Breadboard Various M-M Jumper wire Hardware Setup Wiring Details Cobbler 5v to the Breadboard Power Rail #1 Cobbler…

Read More

Client-side validation of Sitefinity CAPTCHA MVC Feather Form Field

By | MVC, Sitefinity | No Comments

In the current 9.1.6110 release of Sitefinity, there is a known issue with the Sitefinity CAPTCHA MVC form field that prevents it from firing the client-side validation. If the user leaves the CAPTCHA field blank, the form will still submit (either a full post-back or via AJAX, depending on the settings of the form), and the user will see a generic “Entry not valid” error message. It would probably be better to catch this right away via client-side validation. Fortunately, using Feather, we can easily override the CAPTCHA template to enable this. We simply need to change the input field…

Read More