Life Change

Not sure where to begin. My life is moving so fast it is hard to keep track on what I’ve been doing for the past two months.

I’ve moved states. Tennessee to California. Big change. Why? I love change; you learn and experience so much. But, you move away from everyone you know and care for. It’s tough. On top of this, I gave a talk in Oslo, Norway at NDC during this transition. Total sensory overload on magnitudes of scale.

I haven’t been working on FQuake3 or Ferop lately because of the transition. Hopefully, I’ll start back on them again soon. I still have plans for them, just need to get my life comfortable. I still need to get a car.

However, I’ve been in full force with F# and Xamarin. I might have some plans on a few talks related to these topics.

What’s Going On? F#.

There is a lot going on: family, work, user groups, side projects, researching, learning and reading. All of them are what I enjoy. Except reading books; I have a hard time with that…

I can’t ask for a better family who have been supporting me in what I’ve been doing from the very beginning. I can’t ask to work at a better place than Firefly Logic. I am absolutely fortunate. Work isn’t work for me. It is fun. I don’t plan on stopping; I plan on continually improving myself and helping others around me as best as I can.

Nashville is wonderful.



This year is going to be a very busy year for me. I have three talks in New York City (March 20th), San Francisco (April 17th), and Oslo, Norway (Early June) – with the topic focus of porting Quake III to F# and how I am learning functional programming. At the time of currently writing this post, I am busy working out the talk. Thank you Richard Minerich, Mathias Brandewinder, and Bryan Hunter for making this possible.


On my own time, I’ve been working on FQuake3 mostly and trying to solve very difficult problems. Specifically, the problems I’m facing are the problems that the C codebase makes porting difficult; Quake3 has parts where logic starts bleeding into other places that shouldn’t. Porting such parts requires knowledge of the codebase’s complexity and what the rules should be when mapping unmanaged types to managed, and vice versa. Sometimes, re-writing some of the C bits is necessary in order to do the porting. I have a few ideas to help make this process smoother, and that’s what I’ve been looking into recently; nothing solid yet. I plan on to continue to work on this project, and anyone interested is absolutely welcome to help – I don’t care if you don’t know anything, you can learn and have fun doing so!


FQuake3 isn’t all that I’ve been doing. In December last year, I started learning F# type providers to solve problems around using MVVM concepts and idiomatic F#. I researched and read a lot of work done by Dmitry Morozov as well as Michael Newton’s Type Providers From the Ground Up . If I hadn’t, I would be screwed. I ended up with a simple type provider that allowed to write idiomatic F# for use in MvvmCross. This is now being more thoroughly worked on by Reed Copsey here. He also has a video talking about it.

I’ve also looked at the F# compiler and how the optimizations work under the covers. I’ve made two pull requests on F#’s optimizations since then. The pull requests themselves still need review and minor work done, but I’m happy nonetheless since it is at least being looked at and thought through. This would not have been possible if Dave Thomas and Don Syme hadn’t helped me figure what I was doing. I think this image sums my thoughts on everything that I’ve been doing anyway:


I’ve also been using Xamarin quite a bit. Mainly I’ve been on the iOS side of things, but now I’m starting to dig into Android more. Mostly I’ve been writing in C# here, but I think this is about to change a bit more since F# is gaining much more support on Xamarin thanks to Dave Thomas. F# is closer than ever to being extremely viable on all platforms using Xamarin + Mono. I’m very excited. I can’t wait to start writing great software and solving real world business problems.