Hi! I’m Frank - a software developer in Seattle specializing in mobile apps that do nerdy things. My blog is a collection of technical articles , presentations , and app and library announcements .

Azure Resource Organization Cheat Sheet It’s taken me some time, but I think I finally have a handle on how all the various Azure resources are organized and how exactly I’m paying for things. I summarized what I know into a handy little cheat sheet that I hope will help you if you’re as confused as I was.

Appstat - App Sales and Analytics Menu TL;DR I have written an app, Appstat, that I think every Apple app developer will want. It is a macOS status menu app that displays all your apps that are for sale on the App Store plus a whole bunch of data about them including proceeds, sales, ratings, and uploaded builds.

.NET Vector Performance TL;DR I wanted to know what the fastest vector types were on .NET. Turns out, performance varies wildly across platforms. System.Numerics.Vector4 and friends give good performance overall, especially for .NET Core apps, while homemade vector types do not get auto-vectorized. Avoid Vector<T> like the plague. Oh, and iPhone 11s are stupid fast.

Containing Null with C# 8 Nullable References C# 8’s nullable reference types are designed to help rid your apps of the dreaded NullReferenceException . This article walks you through the common errors that you will encounter while updating your app and offers a few of my opinions on how to fix them. It’s a long and windy road to update to nullable references, but you will come out at the end more confident in your code and with fewer bugs.

Oops, I Wrote a C++ Compiler TL;DR I wrote a .NET library that can compile C/C++ code into a byte code that it can also interpret. It is used in my app iCircuit to simulate Arduinos. You can use it yourself with the nuget package CLanguage.

C# Code Prediction with a Neural Network TL;DR I used Python to create a neural network that implements an F# function to predict C# code. The network was compiled to a CoreML model and runs on iOS to be used in my app Continuous to provide keyboard suggestions.

Introducing fuget.org Have you ever wondered what exactly is in a nuget to see if it’s right for you? You read the description, you like the name, but, if you’re like me, you probably ended up in GitHub reading the source code to decide if you want to use the library.

Xamarin.Forms on the Web TLDR: I implemented a web backend for Xamarin.Forms so that it can run in any browser. It achieves this without javascript recompilation by turning the browser into a dumb terminal fully under the control of the server (through web sockets using a library I call Ooui). This crazy model turns out to have a lot of advantages. Try it here!

How I Made Zoom and Enhance - Seattle Mobile .NET Presentation I trained a neural network to perform “zoom and enhance” of faces. It is able to scale faces 16x to make them recognizable. Here’s how I did it.

Fashionable REPL Prompts I was writing a new language the other day and I thought, “this puppy needs a REPL”!

Live Coding with Xamarin iOS TL;DR I wrote a new Xamarin Studio add-in that dramatically reduces the number of Build and Run cycles you need to perform while developing an app. Please follow the instructions to install Continuous and let me know what you think!

My Complaints with Nuget 3 Warning This article is garbage. Don’t read it.

Coding in Your Head I’m terrible at coding interviews - some busy bee dusts off a tricky algorithm that they studied in college and asks you to (1) originate it from a poorly stated problem and (2) live code it in front of them.

Many Levels of App Store Rejection Submitting apps to the App Store is filled with many wonderful opportunities to be rejected. Let’s count them!

Functional GUIs with F# - .NET FRINGE Presentation How do you write a GUI app in a functional programming language that prefers immutability? From Visual Basic on we have been taught how to compose interactive UIs using events and mutable properties. Is there any other way? The answer is, yes, indeed there is. Not only can you build UIs using functional concepts, but I will argue that the architecture of such an app is more modular and more robust than the standard architecture resulting from objects sending messages to each other. This talk is an introduction to the fringe world of functional programming using F# and will have information useful to both beginners and practitioners.

Excited for FRINGE It’s been too long since we’ve had an open source .NET conference. Since monospace/monkeyspace imploded, we’ve been left with just Xamarin’s Evolve. And while I love Xamarin, and Evolve is glorious, it’s just not the same thing as the free-wheeling brain fest of an OS conference. Only at an open source conference do I get to see free thinkers unabashedly demo’ing their latest library or idea without having to bend it to a corporate initiative. It’s liberating and exciting!

Introducing NGraphics Many moons ago I created a cross platform library for rendering vector graphics called CrossGraphics. It was good. It supported lots of platforms and was fast. Very fast in fact because it was designed for my app iCircuit which was already a CPU hog and had to run on 2010 era mobile hardware. To be fast, I played loosey goosey with cross platform accuracy (they mostly rendered the same) and features (who needs gradients?).

Open Source CLRs - Seattle Mobile .NET Presentation This presentation walks through the history of open source CLRs. From Rotor, to Mono, to .NET Core we’ve had our share of implementations and this presentation tries to organize all of that.

Building and Running .NET's CoreCLR on OS X What you heard is true, Microsoft has open sourced the CLR and it runs on more than just Windows. They didn’t just dump some ZIP file on an FTP; no, we have another fully functioning, easy to compile, and easy to contribute to CLR hosted on everyone’s favorite file share. Microsoft has even gone so far as to setup a two way mirror with GitHub so that their internal systems stay in sync with what we see. Color me impressed.

Stop Crashing! TL;DR I wrote a script that lists functions in your Xamarin app that could cause it to crash. StopCrashing.fsx on github.

Programming Augmented Reality - Xamarin Evolve Presentation I present the techniques used to build an AR app on iOS before ARKit was available.

Mocast For the past couple months, I have been working on a top secret project that aims to redefine the way work will get done, address key industry mobility challenges and spark true mobile-led business change. I’m just kidding, it’s a podcast player!

My Xamarin Studio F# Wishlist I am writing a large iOS and OS X app in F# and am totally digging the honeymoon phase. Not only is F# a crazy powerful language, but it has a great interactive code executer built right into the IDE. In all, it’s a wonderful development experience.

Mocast Postmortem - Seattle Mobile .NET Presentation After writing an app, I like to look back at what went right and what went wrong. This is the postmortem I wrote for Mocast where in I realize that observable objects are good but multi-threaded observable collections are not.

Automated UI Testing with Cucumber and Calabash There comes a day in every developer’s life when they have to admit that they just aren’t good testers. We don’t think to hit buttons in strange combinations, we test features in isolation, we don’t re-test for regressions, and we simply don’t do it often enough.

Microsoft's New Systems Language As a programming language nerd I had mixed feelings when Jon Galloway tweeted about Microsoft’s new programming language.

Audio Tales - Something a Little Different One morning, I walked into a random presentation at WWDC. I didn’t know what it was about, but I was on autopilot and determined not to miss one session. It turned out to be Accessibility - not something I tend to think about as evidenced by my apps - but what else is a conference for but to break your habits?

Calca 1.2 - Experiments in Text Editing Let’s face it, text editing text on iOS isn’t the most enjoyable exercise. Text input is fine and dandy, I love flinging my thumbs or resting the iPad on my lap. But editing, no sir. That just sucks.

Buttons Considered Harmful I realized that my favorite apps on the iPhone are the ones that minimize the number of buttons in their UI.

Async Application Patterns in C# - MonkeySpace Presentation I present a variety of ideas on how the new async support in C# can be used to build better apps. I try to go beyond “waiting for IO” and present crazier things such as interactive help and automatic Console App to Web App conversion.

Calca OS X Now Available & Code Reuse Calca is my latest app - a text editor and computer algebra system happily married together. The reaction to Calca has been overwhelmingly positive. I am very excited that people are finding it useful. Make sure to leave reviews and tell your friends. :-)

Calca - the text editor for engineers I am very pleased to announce the availability of Calca, my newest iOS app (and soon OS X app).

Asynchronous Talk Proposal for MonkeySpace 2013 Here is the abstract of a talk I hope to give at MonkeySpace in July - submitted a mere one week after the deadline. Let’s hope the organizers like the idea!

Easy Layout - a DSL for NSLayoutConstraint Layout has changed in iOS 6. We no longer are supposed to calculate RectangleF s and set springs and struts ( AutoresizingMask ), we are to use this very advanced constraint solving system. I wrote a library to make writing constraint-based UIs easier.

Await in the Land of iOS - Scripting Users TL;DR I show how to use the await keyword in C# to build an interactive help system.

iCircuit Code Reuse, Part Cinq I have toiled away with the new Windows 8 OS, the new Visual Studio 2012, and the new Office 13/365 to present you, dear reader, with this fine set of charts:

Mobile Network Performance while Touring Seattle I recently journeyed around Seattle to get a sense of the impact motion has on the network performance of mobile applications.

Programmatic Panning and Zooming with a UIScrollView Let’s say you have a zoomable and scrollable UIScrollView all setup in your app. Great! Good job. But how do you programmatically zoom in on something particular? (For example, you may want to pan and zoom into an object that was double tapped.)

Speakers I can't wait to see at Lang.NEXT 2012 The speaker list for Lang.NEXT 2012 has been released, and I found myself trying to decide which speakers to go see. There are a lot of fine choices so I thought I had better get organized!

A Two-year-old Bug Found by Microsoft I submitted the Windows Phone 7 version of iCircuit to Microsoft a few days ago and was shocked (shocked!) that it failed certification by their testers.

iCircuit Code Reuse Part Trois I have recently finished porting iCircuit to Microsoft Windows Phone 7 (WP7) and wanted to see how I performed on the code reuse front.

3 Mobile App Dev Problems - Monospace Presentation This is my first public presentation! I try to sum up my experience being an iOS app developer using Xamarin and offer solutions to common problems I continually run into.

My Great Wumpus Hunt There is a bug in iCircuit that is tarting to feel like my white whale, my wumpus. I know all about the bug: I know why it’s happening, I know all its symptoms, and I know at least one way to squish it.

INotifyCollectionChanged for cleaner more reusable code My last post briefly described the work I did to port iCircuit to Windows Phone 7. In it, I described how the UI was broken into two large chunks: the graphical circuit editor and the “chrome”.

Interfaces + caches = Cross Platform iCircuit is a mobile app that lets you experiment with circuits on your iOS devices. Well, soon, it will also let you do it on your WinPhone7.

My First MonoMac App - Spy Touch The Mono team has recently given the world MonoMac, a framework that allows C# programmers to write native OS X (Cocoa) apps. This is wonderful news for those who simultaneously love OS X and C#.

Jabroni, Jabroney, or Jaboney Long story short: Jabroni is the modern form of Jaboney, American slang used to mock someone, somewhat vaguely, since at least 1931. The online etymology dictionary defines a jaboney as a “naive person, immigrant, hoodlum.”