December 3, 2018
I recently built an HTML Label control for Xamarin.Forms. It’s available on nuget if you’d like to give it a try. I decided to write this post on how and why I built this particular library. As you may or may not know, there are already several other HTML label controls out there and of course there is the WebView
control. So why did I find it necessary to build my own?
Continue Reading →
November 14, 2018
I’ve been using Azure DevOps (formerly VSTS) for several years to do CI/CD for mobile app projects. However, for library development I’ve been using AppVeyor - mainly because it’s super simple to configure builds with YAML and it always seemed like the de facto CI/CD for NuGet libraries. Over the past year Microsoft has added and improved support for YAML builds in Azure DevOps. So, that coupled with Azure DevOps’ very nice release pipeline setup (which will also allow for YAML configuration soon), I’ve decided to start moving CI/CD for my libraries (I only have a few) from AppVeyor over to Azure DevOps.
One of the things I depend on in my AppVeyor build configurations is the APPVEYOR_REPO_TAG
boolean variable to know if I’m building from new tag that was pushed or a regular commit. I use this for setting versions and determining deployment environments. Unfortunately, Azure DevOps does not have a similar variable (as of Nov 2018). But that doesn’t mean it isn’t possible to do something similar…
Continue Reading →
April 13, 2018
I’m working on a project where we’re building an Android app using Xamarin.Forms and this app will actually be an update to an existing Java-built Android app (same package name). Some beta testers started reporting that after getting the update their “shortcut” launcher icon was missing.
Continue Reading →
November 3, 2017
UPDATE (11/15/17): Today Microsoft announced the general availability of Visual Studio App Center. Mobile Center is now App Center.
My current project is an awesome project. We’re using Xamarin.Forms to build beautiful native iOS and Android apps. And, if that isn’t awesome enough, we’ve totally automated the build and distribution process of these apps using Visual Studio App Center. I absolutely love App Center and how simple it makes setting up CI/CD. You can literally setup a build job in less than 5 minutes with no build host machines or any of those types of complexities that normally come with setting up CI. As you can tell I’m pretty excited we’re using App Center to automate the app builds and releases for this project. But there was one thing I was still having to do manually - updating the Trello board after each build. Clearly this must be automated as well!
Continue Reading →
January 30, 2017
TL;DR
UIBarButtonItem.AppearanceWhenContainedIn(typeof(UINavigationBar))
.SetTitleTextAttributes(attributes, UIControlState.Normal);
Continue Reading →
March 30, 2016
As you probably heard in the keynote at //build today – it is now possible to leverage the Universal Windows Platform (UWP) to build apps for Xbox One! Since the last //build in 2015 we have been using UWP to build single package apps that can be shared by phones and desktops that run Windows 10 – a huge step up from the Windows 8.1 “Universal” app development story.
Continue Reading →
July 20, 2014
In Xamarin.Forms screens are represented by Pages – a Page is a View Controller in iOS, an Activity in Android, and well.. a Page in Windows Phone.
Continue Reading →
July 18, 2014
As a mobile app developer you may often find yourself needing to display screenshots of your work – perhaps for documentation, a slide deck, app store submission, or even a proposal or some other marketing asset. Getting a screenshot of your app is pretty trivial – you can capture it from the device itself or within the various emulators. However, the screenshot is going to look rather plain and typically sans device frame (e.g., just the screen itself, no skin). There are several web-based resources you can leverage to take those screenshots from plain to professional without even opening Photoshop:
Continue Reading →
April 7, 2014
There are often times when you might need to clear the navigation stack (aka back stack) in an app. One common example of this is when you allow a user to sign out – you don’t want them to be able to tap back and still have the ability to see the previous views. As you can image, this is done differently on each platform and therefore it can’t be done directly from a ViewModel – but there is a way to control it from the ViewModel.
Continue Reading →
March 27, 2014
Quick note on changing the visibility of an app bar in a Windows Phone app.
Continue Reading →
March 5, 2014
The ability to build native apps for multiple platforms with Xamarin is pretty awesome. But developing apps for multiple platforms means you might “need” to get some new toys (not a bad thing if you’re like me :)). Personally I use a Windows Phone – I love the platform and have been on it since it came out. I have tons of WP devices lying around the house but not a single Android device (or iOS actually) – so I’ve simply been using Android emulators to do Xamarin.Android development. Unfortunately, the emulators are horribly slow… you even get a message warning you about it:
Continue Reading →
November 10, 2010
As a SharePoint developer or server admin you’ll find yourself in and out of the 14 hive all day long. You also make frequent trips to the various web app virtual directory folders. Both of these key locations are fairly deep and it can get rather annoying traversing down into them. So I started taking advantage of the Library feature that comes with Windows Server 2008 (and Windows 7, of course) to make it easier to access the files in these locations.
Continue Reading →
October 26, 2010
There are many situations where you might need to predefine or set a default FilterExpression for a SPGridView control. This would be a situation where you want to filter the rows within a SPGridView prior to the user selecting any filter parameters from the column headers. I find this particularly useful when initial grid filtering should be based on a selection made from a connected web part such as in a drilldown scenario.
Continue Reading →
October 21, 2010
I created a web part that uses the SPGridView control to display data from a List. I set AllowFiltering to true and when the web part rendered the gridview the column header appeared as a hyperlink with the dropdown menu arrow for applying a filter (just like the OoB grids do). But, when I clicked the arrow the filter menu failed to display – instead I received the following javascript error.
Continue Reading →
October 10, 2010
Believe it or not there is no property of the Project class in the PSI Project Web Service that tells you whether or not a project is published. One might expect something like IsPublished or PublishStatus or even IsDraft but unfortunately none of these exist.
Continue Reading →
September 10, 2010
Typically when writing a custom EditorPart you make it specific to a particular web part. What makes an EditorPart specific to a single web part is the reference back to the web part in the ApplyChanges and SyncChanges methods. You need this reference in order to access the properties on the web part that the EditorPart is collecting values for.
Continue Reading →
August 3, 2010
If you build a 2010 dev machine as a single server complete setup (instead of stand alone mode) and go the local account route for service and worker process accounts you will run into some issues when setting up Managed Accounts. Just like during configuration, SharePoint wants you to use local accounts only with stand alone mode.
Continue Reading →
July 27, 2010
If you have a VHD file that you boot to (Boot to VHD) and you want to copy it and boot to that copy as well you will need to use bcdedit
as follows:
Continue Reading →
May 23, 2010
The My Tasks page in PWA (Project Web Access) has a
Timephased View that shows users their task assignments by week with planned and
actual hours per day. To make it easier on the user to quickly find the tasks
by day where they need to enter hours worked the control “grays out” the tasks
on the days where 0 hours were planned leaving the days that need hours entered
white. The problem is the grayed out tasks are not very dark, in fact you have
to look at your screen from the side to notice the difference between the grayed
out cells and the white cells. To make the grayed out cells more obvious for
the user you can darken them using the following line of jQuery
code:
Continue Reading →
May 14, 2010
Looks like when Saab was developing the Distance-to-Empty logic for the SID (Saab Information Display) they didn’t think they needed to provide a conditional branch for DTE specifically equal to 1…
Continue Reading →
May 3, 2010
When programmatically building Xml documents adding elements and their attributes can become rather repetitive and tedious. Once you create the element object you have to create separate XmlAttribute
instances for each attribute of that element tag and add them to the element’s attribute collection. In many cases you will have to add the same attribute or common set of attributes to different elements throughout the document. This can be a lot easier and intuitive by overriding the XmlElement
class and making the element’s properties that would be XmlAttribute
instances actual instance fields (public properties) of the XmlElement
object itself. So, the client end of your overridden XmlElement
object will simply set the element’s attribute values just as it would the InnerText
property, instead of having create XmlAttribute
instances. The implementation within the overridden XmlElement
will handle the construction of the XmlAttribute
instances as well as adding them to its attributes collection.
Continue Reading →
January 18, 2010
In SharePoint 2010 you can now edit list items directly from within the list view itself using the new Inline Editing feature.
Continue Reading →
June 16, 2009
If you get a 404 error in your browser when browsing to the certsrv virtual directory of the CA server (http://<caHostname>/certsrv) more than likely the virtual directory doesn’t exist. To be sure check IIS running on the CA server. From what I’ve read this can happen if Certificate Services are installed before IIS.
Continue Reading →
June 9, 2009
Be sure to include the enabled
attribute in your roleManager
tag and set it to true
. It is false
by default which means if you don’t include the attribute your role provider isn’t going to work. Note: There is no enabled attribute for the membership tag.
Continue Reading →
July 18, 2008
Here is a quick and easy tip for displaying integers padded with 0’s. This can be very useful when you need to display numbers that have inconsistant string lengths all as the same length. For example, you may have a list of employee numbers that can very in string length (number of digits) from 1 to 5 but need to be printed as 5 character strings padded with 0’s in the front (see the table below).
Continue Reading →