Notebook

Rendering a (mega) PDF in a Xamarin Android app

Display a PDF in Xamarin.Android

Even on mobile, sometimes you need to show people a PDF. In your Xamarin Android app, for most situations, having the user download the document to view it outside of the app using Android's native document viewer is probably fine. But what if the design specifies displaying the document in the app? And what if that document is 100+ pages long? We recently ran into this here at Infinity Interactive and needless to say, displaying a PDF in your Xamarin Android app is not as straightforward as one might expect.

Read More >

Uno Platform

Image of Uno Logo

In the beginning, there were iOS, Android, and the Web. Entirely separate platforms that had to be developed as such.

Then, along came Xamarin. Developers could write iOS and Android apps using a single codebase, but we were still on our own for Web development.

Now, Uno has emerged. Building on top of Xamarin, it gives us the power to write iOS, Android, Web, and even UWP applications using shared logic and UI!

Read More >

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 >

Jiu-Jitsu of project management

Ancient olympic wrestling. https://commons.wikimedia.org/wiki/File:07Athletengrab.jpg
Ancient olympic wrestling

About seven months ago, I started practicing Brazilian Jiu-Jitsu, a grappling art founded in Brazil. Immediately after, I began comparing everything to it. My kids started making fun of me: “Everything is Jiu-Jitsu for you, Dada.” And, they were right. If I was reading, I’d say, “I’m grappling with the book.” If I was cooking, I’d say, “I’m Jiu-Jitsuing food.” If my five-year-old daughter asked me to help her cut her food during dinner, I’d say, “Just Jiu-Jitsu it. Pin it down with your fork so it won’t move. Then, cut it.”

Read More >

Taking up the Slack with RocketChat

Here at Infinity Interactive, we are an entirely remote team. As such, high availability of our communication tools is paramount to our success. Our daily methods of communication include JIRA, email, commit messages, and even, gasp, telephones. While these are effective at doing their job, they are not a replacement for that “human” feel you get when you go into an office and have the ability to have group and individual conversations with your co-workers. For that piece of the puzzle, we use Slack.

The Problem

Slack provides us with real-time messaging between our teammates, as well as a select list of external partners. It also allows us to share files, make conference calls, and provides us with a much needed outlet to tell the latest and greatest dad joke. For the most part, Slack is great. It's intuitive, fairly affordable, pretty reliable, and consistently gets new features.

On the down side, Slack is an external platform. Sometimes we wind up being subject to outages over which we have no control. Since communication is so vital to what we do, we decided to look for a solution that could be used on-demand for when there was an outage at Slack.

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 >

Twenty Thoughts

Yesterday marked our 20th anniversary.

It’s been an awesome ride and we’re grateful for the opportunity to have enjoyed every moment with so many wonderful partners, clients, and colleagues. This weekend, I had an opportunity to spend a few minutes to sit back and reflect on the experiences of the past twenty years as well as the path forward to the next twenty.

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 >
↪ OLDER

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

Reach Out

t: 800.646.0188