The World of Cloud Functions

What are they?

Cloud functions are a great way to run small programmatic services in the cloud. They are easy to create and use, are very secure, and need little maintenance. They even scale on-demand in a way that is very difficult to achieve using regular servers.

Read More >

System monitoring: summoning the beast of a thousand eyes

a peacock, tail fully extended
Here's looking at you, kid

System monitoring. A pretty vital part of any network management. That is, unless you're one of the few who live for the visceral thrill of flying blind. For the rest of us partial to our lack of heart condition, an ounce of prevention is worth ten thousand gallons of Saturday morning intervention.

In this blog entry, I'll go through the exercise of putting together a simple but working and easily extensible system monitoring setup leveraging common pieces of technology.

Read More >

Reduce and Conquer

Bulbophyllum falcatum
reducin' all the way

In an ecosystem riddled with large, portentous frameworks, [Redux][] is a refreshingly ascetic little store management system. Driven more by its functional programming-inspired tenets than supporting code, it offers — and needs — only a few helper functions to manage its stores.

Minimalism is good. It's also a good idea to abstract oft-used patterns into more expressive forms. Ideally, code should be crafted such that its intent comes out on first read, while making deeper digs possible when required.

Happily enough, the judicious use of delightfully succinct higher-order functions is often all that's required to tailor-suit some ergonomics into the manipulation of middleware and reducers. This blog entry will showcase some of those helper functions that work for me.

This article assumes you're already familiar with Redux. If this isn't the case, you might want to check out first one of my [previous articles][pollux], which provides a gentler, if a tad unconventional, introduction to the framework.

Read More >

JSON Schema, shortly

a stenograph - picture by Chatsam / CC-BY-SA-3.0
optimizing that whole typety-type business thing - picture by Chatsam / CC-BY-SA-3.0

JSON Schema is a neat way to describe or prescribe structural expectations of JSON documents (or, indeed, any data structure, let it be a JavaScript plain object or the equivalent in another language). But JSON schemas are themselves JSON documents and, while machines love a good ol’ JSON format, let’s face it: for us humans it’s a lengthy, picky, and mildly onerous format to write and read.

Fortunately, there are many ways to craft JSON schemas while circumventing most of its JSON-born tediousness. Let me show you a few of them.

Read More >

Writing Infrastructure as Code

HashiCorp Terraform
HashiCorp Terraform

When we developed the TPC 2017 mobile application, we wanted to create a repeatable process for delivering white-labeled mobile applications in this space. This new delivery model did not end with the mobile application’s UI and data. The backend had to be configuration-driven and easy to redeploy as well. This way we can spin up a mobile application with a working backend in minutes.

Read More >

So much #speakerlife!

This summer I had the wonderful opportunity to represent Infinity and speak at a number of conferences. Earlier in the year I was doing a much better job of keeping up with writing up my experiences at each conference soon after it happened, but as things got busy over the summer, I got behind. Below the fold, I’ll do a brief recap of each of the five (yes, five!) conferences I’ve spoken at and not yet recapped here.

Read More >

Azure Automation Made Easy

Microsoft Azure Cloud
Azure supports multiple platforms

So, what is Azure? Azure is Microsoft’s cloud solution. It’s a collection of services used to build, deploy, and manage applications. We do a lot of work with Azure here at Infinity. The great thing about Azure is that it’s not limited to Microsoft platforms but also fully supports PHP, Node, Linux, and many other Open Source technologies.

Read More >

Announcing our TPC 2017 app!

TPC 2017
The Perl Conference 2017

Infinity loves Perl and we're happy to announce our involvement in The Perl Conference 2017. Infinity is proud to be a sponsor for the conference, and pleased to provide the Perl in a Day workshop by John "genehack" Anderson. Additionally, John is presenting his "A Modest Introduction to Swift" talk, and Jay Hannah is giving a talk on "Civic Hacking: TIF is millions of YOUR tax dollars". And one more thing… we're giving you a conference app on iOS and Android, to make it easier to browse the schedule on your mobile device!

Read More >

Lottie Animations in Xamarin

Lottie Logo

We do a lot of work with apps and Xamarin here at Infinity. We’ve seen that adding animations to our Xamarin.iOS or Xamarin.Android app makes for a more appealing user experience. But if those animations are overly detailed, programming them may take quite a bit of time. Well, thanks to Lottie (an Open Source animation tool from Airbnb) and Lottie Xamarin (a set of Xamarin bindings for Lottie created by Martijn van Dijk), it's a lot easier to add animations into our apps. Let's check it out.

Read More >

Analyzing a Fantasy

Some of the folks here at Infinity Interactive are avid players of fantasy sports, and this year, they convinced me to join their Fantasy Football league. Two months into the season, what started as a casual game has turned into a trip through a data analytics wonderland as well as what will hopefully be a recurring series of posts here looking at various aspects of the data analysis that I've been doing.

Read More >

Actioner (Another Engine)

I'm still playing around with Redux and, as usual, I'm always on the lookout for ways to optimize my laziness.

One thing that I found irks me just a little bit are the Redux actions. They are nothing but raw Javascript objects, meaning they are very easy to set up and manipulate. But since anything goes, they are also very easy to subtly get wrong. For example, I'm working on a spaceship game and I have an action called MOVE_SHIP. But what arguments was I using for that? Was it this:

{ type: 'MOVE_SHIP', ship: 'enkidu' }

or rather, that:

{ type: 'MOVE_SHIP', ship_id: 'enkidu' }

Sometimes, I remember to double check myself, but other times, I'll use the wrong property and set myself up for a long, protracted, somewhat less-than-joyful debugging session.

Read More >

YAPC::EU Recap

YAPC::EU is Europe's premier event for the Perl programming language. This year the conference was held in Cluj-Napoca, Romania, from August 24 through August 28. Infinity sent one of our developers, Sweth Chandramouli, to attend, and we asked him to give a quick recap of his experiences there.

Read More >

The Technical Details Of Our YAPC::EU app

YAPC::EU recently hosted their annual Perl Conference in Cluj-Napoca, Romania, and Infinity Interactive is proud to have partnered with them in releasing the YAPC::EU mobile application on iOS and Android. Today, we’ll cover some of the technical challenges we faced in creating this app, which we built on the foundation of the Open Source project that provided a similar app for Xamarin Evolve 2016.

Read More >

Redux redux (via Pollux)

Redux is a small JavaScript library that is quite popular at the moment. Liberally inspired by functional programming principles, it offers a state container that is accessed and modified via message passing.

Thanks to this message passing, and a strong emphasis on immutability and pure functions, it minimizes surprises and maximizes sanity. One of its beautiful promises, for example, is that since the state is only modified via messages (or actions) and pure functions, one can consistently replay the actions of an application and end up in exactly the same final state.

As I was reading and playing with Redux, I began to wonder... This is a blissfully small library. How easy would it be to port it to Perl? In the name of science, I had to try.

Read More >

Announcing our YAPC::EU app!

If you’re part of the Perl community, you probably know how much Infinity loves Perl and Open Source. However, you may not know how much we also love Xamarin and mobile development -- but after you check out the new YAPC::EU::2016 app on iOS or Android we've put together, we hope you’ll appreciate how our love for Open Source is too big to be limited to just one language or platform.

Read More >

OpenWest 2016 Recap

OpenWest is “the largest regional tech conference devoted to all things OPEN: Hardware, Standards, Source & Data”. This year the conference was held in Sandy, UT from July 13th to July 16th.

Infinity sent a large contingent of folks to Sandy for the conference, and a number of them have summarized their experiences in this blog post.

Photograph of the front of the OpenWest 2016 venue

Read More >

iOS Animations in Xamarin - part 2

We're back with the second part of our post on iOS Animations in Xamarin. In this post I'm detailing some of the animations seen in TaxChat, an iOS App we recently launched. In the first part we discussed AnimateNotify, AnimateKeyframes and AddKeyframeWithRelativeStartTime. In this continuation we will look at animating rotation and scale using CGAffineTransform, then animating a CAGradientLayer using CABasicAnimation.

Read More >

Git Mo' Meta: Easily Adding Meta Information to Git Branches

From time to time, it comes in handy to tie various types of information (ticket id, bug or feature, task owner, sprint information, deadline, etc.) against a branch. Often we can get away with just adding them to the branch name, but it can get ludicrous real fast. In those instances, 'bugfix/jira-613-sprintD-deadline20160523-by_yanick' just doesn't cut it.

Read More >

iOS Animations in Xamarin

We recently launched the app TaxChat, "tax preparation for people who have better things to do." The iOS app saves you from having to do your taxes by yourself; instead you just answer a few questions, snap a couple of photos and a certified tax professional will take care of your tax return for you. All through a beautiful & intuitive interface. You can read more about it at

Since we built TaxChat using Xamarin, I figure this is a great time to write a post on iOS animations in Xamarin and detail some of the animations seen in the app. If you don't already know about Xamarin, check out this introduction to Xamarin by our resident Xamarin MVP, Sean Sparkman. Essentially, Xamarin allows you to build native apps for multiple platforms all in C#, which is pretty sweet.

Read More >

Herding Camels

They say that no man is an island. Likewise, no software runs in a void. Well, except maybe for Voyager's main control. But that's not the same. And beside the point.

So, as I was saying, no software runs in a void. There are dependencies to think about. And depending of where you are in the overall stack, those can come in two flavors. There are, obviously enough, the dependencies that you are using, and there are the reverse dependencies; the other pieces of software that depends on your own.

Fortunately, testing is a very deeply ingrained characteristic of the Perl world. Modules come with their test suites, and the ever-vigilant, ever-running CPANtesters ensures that if a new release of a CPAN module breaks tests of another, authors are more likely than not to learn about it rather quickly.

That's already mightily fine. But sometimes one needs more… custom arrangements. Recently I had such needs, and with the judicious use of already-existing tools I was able create a little setup that would not only allow me to test a selection of modules on my box, but also let me painlessly upgrade those modules when they'd change on CPAN.

Read More >

To Infinity And loading.......

Recently, I was working on an internal project and started thinking about the infinity symbol. After reading Will's great post on recreating the Archer title sequence with CSS animations, I came up with the idea to create a loader using the symbol. A loader is an animation used to signal to the user that something is happening, like data loading or when submitting a form.

Read More >

Bread::Board, part II: Beyond the DSL

Welcome to the second installment of our Bread::Board tutorials. In the previous article, we've covered what type of situation calls for Bread::Board, and we had a high-level overview of how to use it. In this installment, we'll begin to dig deeper into the inner workings of the framework. More specifically, we'll look beyond the DSL we used thus far for our examples, and learn how to manually create the underlying objects of a Bread::Board application.

Read More >


Perl 6 will be ready for production in 2015, according to Perl creator Larry Wall. At least, that's what he said during his FOSDEM 2015 talk. This news reminded me that it has been quite a while since I tried anything interesting with Perl 6. I decided to spend my weekend installing and playing with Rakudo, the primary Perl 6 implementation.

Read More >

Taking CSS Animations to the Danger Zone

Lately I've been wanting to experiment a little more with CSS animations. I already use them for small effects, but to really get to know something, I need a project. A while back I was watching one of my favorite cartoons, Archer, and as the title sequence was rolling I realized, "this would make an awesome CSS animation project!"

Whenever you try to recreate something, it's best to study the original. A quick search led me to Art of the Title a site dedicated to title sequences. Lucky for me, they have the Archer title sequence posted for our viewing pleasure. Have a look at it to see the sequence I'm building towards.

Read More >

A Dashboard for My Apartment

I originally bought my iPad back when tablets were becoming a fad. I had expected to use it for everything from reading ebooks to playing elaborate new games. But no, it has been sitting idle, collecting dust, for years. Even the promise of a shared, coffee-table web browser has fallen flat. Whenever there's a task to be done, I instead reach for my laptop or my phone. After all, as phones get larger and more capable, and laptops get lighter and extend their battery life, the sweet spot that tablets offer gets squeezed out from both above and below. So for the past year or so, my usage has been limited to ordering food online with friends, passing the iPad down the couch. But now I've finally figured out the perfect job for it. I've mounted it right next to my front door. My previously-unused iPad now serves as a dashboard and control panel for my apartment.

Read More >

Super-duper-happy Nancy-based API... as a Windows Service

Nancy is a lightweight framework for building HTTP-based services on .NET and Mono. The goal of the framework is to stay out of the way as much as possible and provide a 'super-duper-happy-path' to all interactions. This approach to sensible defaults and conventions means that it is very easy to write a stand-alone self-hosted web site or API that runs as a desktop application. In this post, I'm going to discuss the equivalent happy-path for deploying such an application as a Windows Service.

Read More >

Shellshock in the Wild

The recent disclosure of a critical security flaw in the widely used bash command-line shell for Unix operating systems sent many technology professionals scrambling to update their systems. We were certainly among them.

Read More >

Theremin Fountain with C# and the Arduino Uno

My Project Idea

I want to create a fountain that can entertain guests. Namely, I want to be able to control the flow of the fountain with my hand. Recently, at our last summit, Jay Hannah introduced me to the Leap Motion, which is basically a Kinect for the hands. A little research introduced me to Arduino, an open source solution for programming microcontrollers.

The fountain will be built using base electrical components. The actual physical basins for the water may be taken from an existing fountain, but I plan on making that decision later. This post details my initial goals for the project, as well as the first steps I took towards a side-project, and the coding hurdles I had to overcome to complete the side-project.

Read More >

II Does Training

Infinity Interactive is pleased to once again offer Perl training at this year's YAPC::NA! We will have three sessions, both before and after the conference itself. The pre-conference training is aimed at people new to Perl, while the post-conference training is aimed at people who already know Perl and are interested in more advanced topics.

These all-day sessions are taught by Infinity's eminent Perl experts and are offered at our special community rates.

Read More >

API Source Code to Website Help Pages in ASP.NET Web API


Recently, I was working on a team project with a number of independent components each with their own data, logic, and presentation layer. I was assigned the task of creating an API for capturing large amounts of real-time data. Since other developers needed to use it, the API had to be documented.

Technical writing is probably one of the most difficult things to do. The intended audience most likely does not want to read it. It needs to have just enough detail, but it needs to be short. And even if it does meet all those requirements, people still may not read it.

Read More >

Modernize Your Legacy

Are you trying to bring modern development practices to a… less-than-modern software development environment?

Image by J. Gannon used under CC-BY-SA

Talk to any experienced programmer and they probably have a few stories to share about organizations that were — or still are — suffering from business, organizational, or technical practices causing unnecessary suffering for everyone involved.

Read More >

Spreadsheets as a data exchange format


When working with non-technical clients, often their preferred means of exchanging structured data is via spreadsheets. Using a custom tool is not always practical due to cost or training time constraints, and using a type of document that doesn't have its own standard editor (such as XML or JSON) will generally result in having to deal with malformed files on a regular basis, since these files are often edited by hand.

Excel is the only program for managing structured data that is widely used by both technical and non-technical people, and being able to leverage that structure can make the whole data exchange process much smoother, even though it can be frustrating at times.

Read More >

Leap Motion

Leap Motion is a slick little infrared sensor unit you can buy for $80 online, or at your local Best Buy. A quick install later and you can now wave your hands in space above the unit and interact with your computer in three dimensions.

Leap Motion

I had the pleasure of working with Leap for a partner proof of concept and thought I'd give you some of my early thoughts and observations.

Read More >


Picking a templating engine

Choosing a templating engine can be a difficult aspect of building a website. Designers need enough control over the structure and layout of the site to be able to refactor it without requiring any programming, while developers need to be able to easily insert data programmatically into the site. Finding the right balance between those needs isn't a trivial task, since it depends a lot on the makeup of your team.

The templating engines that exist span a wide range of organizational styles, from entirely developer-focused to entirely designer-focused, with all kinds of options in between. One of the options that has provided us with the best compromise between ease of use for developers and designers so far has been Handlebars.

Read More >

Consuming Web Services with WSDL2JAVA

If you've come across the task of consuming a web service via a WSDL you were given, there's a chance you may have cringed a bit. All that XML involved and then determining your approach is a challenge as well! Do you want to use a SOAPConnectionFactory or create an XML message by hand and parse the response? These approaches will work but it will likely take time away from what you really want to do and that is develop the application you're working on. Along comes WSDL2JAVA, a tool which will build Java proxies and skeletons for services with WSDL descriptions. In this article I'll highlight the steps needed to consume a web service with WSDL2JAVA.

Read More >

Xamarin: An exciting option for cross-platform mobile development

Is Cross-Platform Mobile Development a Pipe Dream?

HTML 5 has proven to not be the silver bullet everyone hoped for. By their own admission, Facebook's biggest mistake was betting on HTML 5. While it works well for content, anything more than that needs native performance. Mobile users demand native performance. The first few seconds of any mobile user's experience is the most important. Users will uninstall or never again open an app if they are dissatisfied in those crucial first moments. So what is the answer if it's not HTML 5? There's a case to be made that it's Xamarin.

Read More >

We solve problems with technology. What can we solve for you?

Reach Out

t: 800.646.0188