our posts tagged “technology”

The State of AI in Early 2023
Toby Deshane & Eric Wagoner
july 7th, 2023

During an internal company meeting in early 2023, Toby Deshane gave a talk about the capabilities and potential risks of AI tools such as ChatGPT and CoPilot, both quite new at the time. It also addresses common questions such as ethics, cost, privacy concerns, and the growing possibility of open-source alternatives. The rapidly evolving nature of the field has aged some material here, but in general it still provides a unique insight into this exciting nascent era in history.

…read more


automated browser testing: bridging the gap between dev and qa
Eric Wagoner
september 2nd, 2020

Picture of a robot typing on some sort of virtual computer

We recently were a part of a project with what was, in many ways, a typical successful startup. The company makes hardware for a niche market, powered by their own firmware and driven by a suite of web applications running both on a server and locally as Electron apps. They make a great product that is disrupting the space and they’re growing rapidly, both in company size and number of users.

What started as a small integrated team has spun up to several groups overseeing various aspects of the product and as that happened the developers became somewhat siloed from the QA folks. Each group had its own process for keeping the quality high in the face of rapid growth, namely thorough unit tests on the development side and a series of step-by-step documents used by a number of testers to manually go through every page and every button of the web applications. Releases were coming quickly and the testers were spending hours upon hours methodically testing only to have to start all over again when another release came out of development. They were overworked and almost overwhelmed, and called Infinity for help.

…read more


mobile development: finding the right solution
Sean Sparkman (@seansparkman) & Paul Zolnierczyk (@paulish29)
april 28th, 2020

Many mobile phones

With an estimated 3.2 billion smartphone users in 2019, the mobile app industry is growing and not showing any signs of slowing down. Along with this growth in smartphone usage comes increased demands and expectations from end users. Apps need to use the latest smartphone features, be fast & easy to use. This is further complicated with the need to develop for both Android and Apple smartphones as well as tablets. For someone with an app idea, considering all these factors can be a bit overwhelming. This is where Infinity Interactive steps in. Infinity has extensive experience in the mobile app arena and can help you identify the best approach for your app and target audience. Today, companies are not just restricted to developing a native mobile app. They can also build mobile web apps, progressive web apps, and cross-platform apps. This post will cover the pros and cons of each with the hope of giving a clear path for taking an app idea into app reality.

…read more


Thinking remote? Advice from a guy who’s been running a fully distributed company since 2005
Jeremy Shao (@jeremyshao)
march 10th, 2020

At Infinity, we’ve been a fully remote, on-shore tech consultancy and custom software development company since 2005 (founded in 1998), so a lot of our friends and contacts have been asking us for advice on effectively managing remote co-working. We thought it would be helpful to share some of our tips and tricks from both the leadership and employee perspectives.

…read more


Rendering a (mega) PDF in a Xamarin Android app
Will Hutchinson (@tetowill)
november 1st, 2019

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
Kenzie Whalen (@knz_whalen)
october 25th, 2019

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
Liam Mackey
march 25th, 2019

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


Taking up the Slack with RocketChat
Phil Shirley
november 26th, 2018

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.

…read more


System monitoring: summoning the beast of a thousand eyes
Yanick Champoux (@yenzie)
july 31st, 2018

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
Yanick Champoux (@yenzie)
may 24th, 2018

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, which provides a gentler, if a tad unconventional, introduction to the framework.

…read more


JSON Schema, shortly
Yanick Champoux (@yenzie)
february 19th, 2018

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
Sean Sparkman (@seansparkman)
december 27th, 2017

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!
John SJ Anderson (@genehack)
october 11th, 2017

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
Sean Sparkman (@seansparkman)
june 27th, 2017

Microsoft Azure Cloud

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


Infinity at Beer City Code
John SJ Anderson (@genehack)
june 14th, 2017

This past weekend I visited Grand Rapids, Michigan for the first ever Beer City Code on the campus of Calvin College. I took a class on how to write .NET applications on a Mac, saw some great talks, presented a talk on JSON Web Tokens, and more. My full wrap up is below the fold.

…read more


Announcing our TPC 2017 app!
Paul Zolnierczyk (@paulish29)
june 12th, 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


Stitching up a better monster
Yanick Champoux (@yenzie)
june 9th, 2017

The nice thing with knowing a technology well, is that you can create a lot of nifty things. The nicer thing with knowing a healthy smattering of technologies, is that with the right amount of cunning and slyness you can gather things here and there and build something that is niftier than the sum of its parts.

…read more


Lottie Animations in Xamarin
Will Hutchinson (@tetowill)
may 31st, 2017

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


Infinity at LinuxFest Northwest
John SJ Anderson (@genehack)
may 19th, 2017

The first weekend in May, I had a chance to attend LinuxFest Northwest in Bellingham, WA. I also got to present a couple talks. I had a great time --- read on for all the details!

…read more


Xamarin Premier Consulting Partner
Paul Zolnierczyk (@paulish29)
march 22nd, 2017

Infinity Interactive is proud to announce that we are officially a Xamarin Premier Consulting Partner!

Xamarin Premier Consulting Partner

…read more


Infinity at SCaLE
John SJ Anderson (@genehack)
march 16th, 2017

I recently had the opportunity to attend and speak at SCaLE 15x in Pasadena, and it was an awesome experience. Read on for an overview of all the great talks I got a chance to see!

…read more


#Xamarin and .NET Take Milwaukee
Paul Zolnierczyk (@paulish29)
november 4th, 2016

Infinity's own Paul Zolnierczyk attended (and presented at) MKE DOT NET, a one-day development conference in the Milwaukee area. MKE DOT NET brings together .NET developers from the Midwest to explore new ideas, code, share knowledge and discover best practices. Here’s his recap.

…read more


Analyzing a Fantasy
Sweth Chandramouli (@sweth)
november 2nd, 2016

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)
Yanick Champoux (@yenzie)
october 21st, 2016

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
Sweth Chandramouli (@sweth)
october 17th, 2016

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
Paul Zolnierczyk (@paulish29) & Nate Robison (@ntrobison)
october 5th, 2016

YAPC::EU

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)
Yanick Champoux (@yenzie)
september 9th, 2016

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!
Paul Zolnierczyk (@paulish29) & John SJ Anderson (@genehack)
august 23rd, 2016

YAPC::EU

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
Jake Goldsborough (@rjgoldsborough)
july 22nd, 2016

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.

…read more


iOS Animations in Xamarin - part 2
Will Hutchinson (@tetowill)
july 6th, 2016

TaxChat summary screen

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
Yanick Champoux (@yenzie)
may 25th, 2016

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
Will Hutchinson (@tetowill)
april 7th, 2016

TaxChat onboarding screen

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 tax.chat.

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
Yanick Champoux (@yenzie)
february 12th, 2016

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.......
Jake Goldsborough (@rjgoldsborough) & Will Hutchinson (@tetowill)
august 4th, 2015

Jake: 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
Yanick Champoux (@yenzie)
july 9th, 2015

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


Rakudobrew
Brian Wisti (@brianwisti)
june 2nd, 2015

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
Will Hutchinson (@tetowill)
april 8th, 2015

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


Django Migrations
Nate Robison (@NTRobison)
march 13th, 2015

The recent release of Django 1.7 comes with built-in support for database migrations. In previous versions of Django, the popular way to manage migrations was a third-party tool called South. Thanks to a successful Kickstarter project, the creator of South worked to build support for migrations into Django 1.7.

…read more


A Dashboard for My Apartment
Shawn M Moore (@sartak)
march 6th, 2015

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


A Gentle Introduction to Bread::Board
Yanick Champoux (@yenzie)
february 18th, 2015

Bread::Board. It has one hoary hairy heck of a scary reputation.

But while it's not totally undeserved—Inversion of Control as a concept tends even at its best to, well, turn one's mind inside-out like a sock—the truth is much less daunting than the hype would have you think.

…read more


Super-duper-happy Nancy-based API… as a Windows Service
David Knaack (@AC0KG)
november 3rd, 2014

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
Mike Eldridge
october 2nd, 2014

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
Alex Sparkman (@alexpsparkman)
august 7th, 2014

Piezo

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


YAPC! YAPC! YAPC! Recap
Jake "ducks" Goldsborough (@rjgoldsborough)
july 3rd, 2014

That's right folks. The annual North American Perl conference, YAPC::NA, was held in sunny Orlando, Florida last week. Infinity Interactive was well represented and many of our developers presented talks.

…read more


Groovy - Funny name, serious power
Paul Zolnierczyk (@paulish29)
may 9th, 2014

In a previous post I demonstrated how to consume a stock web service using WSDL2JAVA. Although WSDL2JAVA is a great tool, it can generate some long and difficult-to-read code. In this post, I'm going to demonstrate an easier, more concise way of calling the same web service using Groovy.

…read more


API Source Code to Website Help Pages in ASP.NET Web API
Alex Sparkman (@alexpsparkman)
may 2nd, 2014

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
Jay Hannah (@deafferret)
april 25th, 2014

Egyptian loom

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

…read more


Spreadsheets as a data exchange format
Jesse Luehrs (@doyster)
march 27th, 2014

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
Jay Hannah (@deafferret)
march 21st, 2014

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


Consuming Web Services with WSDL2JAVA
Paul Zolnierczyk (@paulish29)
march 4th, 2014

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
Sean Sparkman (@seansparkman)
january 13th, 2014

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