Tag

C# Archives - Falafel Software Blog

On Sitefinity Custom Widget Caching

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

Sitefinity is Caching too Hard! If you’ve done software development for any length of time, you’ve likely run into a caching issue. Caching is difficult to get right, but it is so beneficial that we work with it in nearly everything we do. In the case of Sitefinity, it performs caching all over the place. As a result, many aspects of the Sitefinity experience are greatly improved. If you disabled caching for a Sitefinity site altogether, the site would slow down immensely. Sitefinity, by its nature of being a Content Management System, stores the bulk of its content in the…

Read More

Dynamic Content Detail Widget Templates in Sitefinity

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

Getting to Dynamic Content Data in Custom Code Behind In a previous post, I went over how you can easily create a custom code-behind C# class for any Widget Template in Sitefinity. Give that post a quick once-over, as this post builds upon that one. For built-in Sitefinity content items, accessing the data is pretty straightforward (see the previously-linked post): You grab the container, iterate over the items (even in the case of a single detail item), and then work with the data to make customizations to the page. For Dynamic Content Detail Widget templates, however, things work differently. You…

Read More
Google-Cloud-Platform-UWP-App-Profile-Images

Using Google Services in UWP C# Apps – Part 2

By | Cloud Platform, News | One Comment

This is post 17 of 17 in the series “Google Cloud for the .NET Developer” We previously looked at how you can use the WebAuthenticationBroker to allow end users to authorize a UWP app to access their Google account information. In this post we’ll complete the sample by describing how to authorize a UWP app to access Google Cloud Product services. To demonstrate this, we’ll recreate the ASP.NET MVC sample that logins in a user, grabs their profile image, and uploads that image to Google Storage. However, just like in our previous sample, we don’t have any helper libraries we…

Read More
Google-Cloud-Platform-UWP-OAuth-Sample-Launch-Browser

Using Google Services in UWP C# Apps – Part 1

By | Cloud Platform | No Comments

This is post 16 of 17 in the series “Google Cloud for the .NET Developer” It’s no secret that I love Windows, and especially writing UWP apps for Windows using C#. In fact I’ve written a bit about creating UWP apps in the past, so as a fan of UWP, I wanted to explore how one can leverage the Google Cloud Platform and other Google services in Windows apps. Unfortunately, as of this writing, Google does not officially support UWP. However, this is not to say you cannot USE Google services in your app; it only means that the SDKs available to…

Read More
GCP Pub/Sub

Pub/Sub Part 2 : REST-based Google Cloud Pub/Sub with OAuth and C#

By | .NET, Cloud Platform, Google | No Comments

This is post 10 of 17 in the series “Google Cloud for the .NET Developer” Pub/Sub is an increasingly popular component of many cloud-driven solutions. Producers publish messages to a topic, and subscribers consume them typically triggering some type of work. Pub/Sub queues are also very important when it comes to high-throughput data ingress, typically synonymous with IoT solutions. I will show you how to publish to and consume messages on the Google Cloud Platform using the REST-based API, authenticated with OAuth and using C#. Getting Started If you haven’t already, create a Google Cloud account (they offer a 60…

Read More

Pub/Sub Part 1 : C# OAuth Authentication to Google Cloud Pub/Sub using a Service Account

By | C#, Cloud Platform, Google | No Comments

This is post 9 of 17 in the series “Google Cloud for the .NET Developer” If you are looking to consume Google Cloud services, you will need to authenticate. In my case, I was looking to use a service account created for a Pub/Sub application that I have in mind. I will walk you through creating a Service Account, downloading a key and authenticating with the Google Cloud Platform using a C# library. The first thing that you will need to do is log into the Google Cloud Platform console (create a project, if you don’t already have one). From…

Read More
Big ear man listening

Understanding Natural Language

By | Cloud Platform, Google | No Comments

This is post 8 of 17 in the series “Google Cloud for the .NET Developer” Isaac Asimov speculated that you could plug a politician’s speech into a mathematical model, zero out the equation, and prove that the politician had said nothing. We know this intuitively, but I never thought you could actually do it. The Natural Language API from the Google Cloud Platform comes close by measuring sentiment found in text. The Natural Language API sentiment score ranges from –1.0 (negative emotion) to 1.0 (positive emotion). Ever watch HGTV? This may sound familiar: “The kitchen is so cramped. I really…

Read More
Google-Cloud-Platform-Authorize-User-Account

Authenticating Your C# Application for the Google Cloud Platform – Part 2

By | Cloud Platform | No Comments

This is post 5 of 17 in the series “Google Cloud for the .NET Developer” Now that we understand how to authenticate a C# application to work with your own project’s GCP resources, let’s take it a step further. In this post, we’ll look at how we can combine that connectivity with end user data, via three-legged OAUTH authorization, to perform operations on user content, with their permission of course. For this example, I’ve created a very simple ASP.NET MVC project that logs a user in, gets their profile image, and uploads it to a specific bucket. Let’s take a…

Read More
Google-Cloud-Platform-Authorization

Authenticating Your C# Application for the Google Cloud Platform – Part 1

By | Cloud Platform | 2 Comments

This is post 4 of 17 in the series “Google Cloud for the .NET Developer” The new C# libraries for the Google Cloud Platform, available on NuGet, make it easy to get started adding these features to your platform. However, before you can use them, you obviously need to authenticate your application for access. Google uses OAUTH 2.0 as the protocol for authentication In this post we’ll discuss the different scenarios you may encounter, and the different options available for authorizing your application. Server to Server Authentication If you are building an application that is leveraging GCP infrastructure as its…

Read More
Google-Cloud-Platform-Nuget-Pacakges

C# Support for the Google Cloud Platform

By | Cloud Platform | One Comment

This is post 3 of 17 in the series “Google Cloud for the .NET Developer” At the end of the day, like most APIs you encounter in the wild, Google services are exposed as standard REST endpoints. If you know how to create, authenticate, and issue an HTTP request, you have everything you need to add Google’s extensive list of services (including the Google Cloud Platform) to your applications. However, most developers prefer to spend their time focused on the implementation of their application, and would rather skip mucking around with boilerplate code to create raw HTTP requests, serialize requests and…

Read More

Read/Write data from/to USB thumb drive on a Windows IoT Core device

By | .NET, Blogs, C#, Fun, IoT, Microsoft, Multi-Device, News, Raspberry Pi, Visual Studio, Windows Universal Apps | One Comment

Currently, universal apps are sandboxed to the point of blocking you from reading/writing data files to a removable USB drive on Windows IoT Core devices. This post will show you a work around if you really need to do this. Now, understand that this is not for store apps. If you submit an app using this work around, it will likely get rejected. However, for internal projects, it will definitely work, and work well. This is a great way of reading application initialization data and writing log data in a test apparatus and laboratory setting. Particularly when a network or…

Read More

Breakpoints in Auto-Properties in Visual Studio 2015

By | Visual Studio | No Comments

This tip falls squarely into the category of simple, yet oh so useful. Visual Studio 2015 isn’t exactly new, but I am still discovering things that make it so nice for debugging. That’s where I’ve spent a lot of my time this week, and one thing that has saved me is using Actions on breakpoints to print messages to the console. And surprise! You can do the same thing even when using auto-properties in Visual Studio 2015 without backing fields.

Read More

C# Windows IoT Core Serial Communications with an ESP8266

By | Blogs, C#, ESP8266, git, Hardware, IoT, Microsoft, Multi-Device, News, Raspberry Pi, Visual Studio, Windows Universal Apps | No Comments

Windows IoT Core is great for connecting single board computers such a Pi2 to an ESP8266, via a serial link. The hardware for such a link can be found in my previous post here. The details for a basic serial communication C# framework are detailed in this post. If you have an ESP8266, there are numerous ways of communicating with them such as LuaLoader. However, I needed to communicate with my ESP8266 through a Pi2 running Windows IoT Core. This is part of a larger automated test project for an upcoming consumer project we’re developing. In this post, I’ll cover…

Read More

One-Time Passwords (OTP)

By | .NET, node.js | No Comments

Years ago, I worked for a customer who provided me with a RSA SecurID device to access their VPN. This was a plastic fob that would display a six digit number on a LCD screen. Every 30 seconds, the numbers changed to a different random six digits. To log into their VPN, I had to provide my username and password, plus the current six digit number displayed on the device. So, even if my password was compromised, an attacker still could not get into their VPN without also having that SecurID device. Today, we simply call this Two-Factor Authentication, or 2FA. While plastic fobs…

Read More

Is an 80 Character Code Line Length Still Relevant?

By | C#, CSS, JavaScript, TypeScript, Visual Studio | One Comment

If you’ve spent any time reading about coding standards on the internet, you’ve probably come across the suggestion to limit lines of code to 80 characters and wondered if it’s still relevant today. The advise to limit lines to 80 characters is often connected to the historical limit of 80 characters in terminal windows. But what if your team is not subject to this constraint? Are there still any benefits to adopting this limitation? I tried living with it for a while and here are my takeaways. Growing pains Indentation When I first set out to try this style out,…

Read More

Multilingual Publishing in Sitefinity

By | C#, Sitefinity | No Comments

Initially Publish your Content in a Non-Default Language Sitefinity has great multilingual publishing capabilities. From the perspective of an end-user / content manager, the backend offers up a myriad of methods to create content items both in the site’s default language as well as any other languages activated/enabled in the site itself. They’re all usually just one click away, and provide a good experience. But what about the development side of things? Say we have a custom widget that creates a content item, but the language either must be something apart from the default, or is user-selectable before creation occurs?…

Read More

Widget Template Code Customized the Easy Way

By | .NET, ASP.NET, C#, Sitefinity | One Comment

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

Using HandleUnknownAction in MVC Widgets

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

Sitefinity’s MVC widgets are fantastic. They allow untold amounts of customization and enable you to create an MVC framework as complex or as simple as you need. There is a caveat to using them, however: Because the controllers are typical ASP.NET MVC controllers, going to particular pages on your site might make them disappear! There is a simple workaround for this problem, and with this information you can ensure that your Sitefinity MVC widgets consistently display no matter what current state your web site is in. The Problem Say you have a simple custom MVC widget that has a single…

Read More

Accessing Sitefinity Roles in Code

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

When developing custom solutions in your Sitefinity application, you may need the ability to work with Sitefinity roles. As a developer, you would reach out to the RoleManager that Sitefinity provides, and access the roles from there. However, you may run into an issue where some roles, verified to be a part of your site, are not represented when working with the RoleManager. This post goes into this issue, and shows how to access all Sitefinity roles to work with. Basic Role Access Let’s say you want to list all available Sitefinity roles on your web site. The natural idea…

Read More

Customizing Search Result URLs in Sitefinity

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

One of Sitefinity’s many features is its search capabilities. Using Lucene under the hood, Sitefinity indexes your site content, both built-in content types and dynamic content types, along with static HTML, and allows you to present organized results to the user. You can customized what is and isn’t indexed among other things. Most of the time, Sitefinity is smart enough to create search result URLs that take you directly to the content in question. If you have “/my-news” as your news page, for instance, a particular article URL might look something like “/my-news/2015/1/1/my-article-url”. The search indexer automatically takes the page…

Read More

A Simple Natural Sort

By | .NET, C# | 5 Comments

If you’ve ever had to sort alphanumeric data, you’ve probably encountered the issue of sort order when letters and numbers are mixed. Here is a quick example:

The first set is using a standard ASCII sort which is sorted correctly, but not what most people expect–shouldn’t a2 come BEFORE a11? What they want is a natural sort which treats letters as letters and numbers as numbers rather than treating everything as an individual ASCII character. There are PLENTY of natural sort solutions out there and some may work better for your particular situation, but I came up with a simple natural…

Read More

Working with Hybrid Forms in Sitefinity Widgets

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

Throughout the course of web development, you often find yourself in a situation where you need data input from your user. Scenarios range from a simple contact form, to something as complex as a multi-part job application. In either case, Sitefinity offers multiple solutions. The easiest solution, for the simpler forms such as the aforementioned contact form, is to use Sitefinity’s built-in Forms capabilities. Much like with their pages, Sitefinity Forms provide a very simple, powerful way to create and customize even more complex forms for your site. The resulting data is then stored in Sitefinity, and can be set…

Read More

Relating Data in Sitefinity Content

By | .NET, C#, Sitefinity | One Comment

In my previous post discussing properties on custom content, I delved into some of the more complex types that can be properties, including classifications and related media. This post will get into the most complex type to work with: Related Data. This is taking existing custom content types and allowing other content types to have a property that relates one to the other. Relating data can happen with built-in content types (e.g. News), extend across other module builder modules, and even be self-referential! On top of all that, you can even create a custom content type that is the parent…

Read More

Complex Custom Properties for Sitefinity Content

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

In my previous post I talked about basic access of custom properties in Sitefinity. Namely, strings and numbers. Those alone cover a lot of what you’d use when it comes to custom fields on built-in content types and custom content types. In this post, however, we’re delving into some of the more complex custom properties that can be associated with Sitefinity content. Like in the previous post, we’ll cover both how to query by a complex property (where applicable) and how to fetch the content of the complex property. Classifications (Tags, Categories, Custom) Fetching Tags and Categories within Sitefinity are…

Read More

Retrieving Simple Custom Properties from Sitefinity Content Items

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

Sitefinity offers many extension points to its core content types, as well as letting you create completely customized content types of your own via the Module Builder. You can add custom fields to existing types like News and Events, or add as many fields as you like to custom content types. Working with these custom properties in code can seem a little daunting at first: How do you do it? What data types do you work with? Which methods do you call on your objects? There are several ways of accessing certain kinds of properties, while others you have to…

Read More