shawn.blais

Shawn has worked as programmer and product designer for over 20 years, shipping several games on Steam and Playstation and dozens of apps on mobile. He has extensive programming experience with Dart, C#, ActionScript, SQL, PHP and Javascript and a deep proficiency with motion graphics and UX design. Shawn is currently the Technical Director for gskinner.

@tree_fortress

Introducing: Flokk – A Desktop App built with Flutter!

After several months of hard work, we’re excited to announce our latest collaboration with Google, Canonical, and the Flutter Team, it’s a cross-platform app called Flokk!

What is it?

Flokk is a Google Contacts Manager, targeting Desktop, that allows you to integrate the Twitter and GitHub activity of your friends and contacts. 

Building Flokk

Flokk was built using the latest master branch of Flutter, and targets Linux, macOS, and Windows (with Web-Support thrown in as a bonus!). We spent a lot of time trying to make it feel like a native Desktop App and are extremely happy with the results. In the end performance was great across all the desktop platforms and rendering was extremely consistent. Flutter Desktop really looks like it could be poised for great things.

We worked closely with the Flutter team throughout the project to identify issues and develop workarounds. We will be posting more in the next couple of weeks about the architecture we used, challenges we faced, and some of the specific solutions we came up with.  

In the meantime you can check out the code right now! The entire project is open-sourced on GitHub at https://github.com/gskinnerTeam/flokk. We’re excited to see what the community does with this project, and encourage you to clone or fork the repository and jump into the code. 

Additionally we’ve posted builds for all operating system and web:

What’s Next?

The current build is in a “production ready” state, but there were still a number of loose ends and features we were hoping to add, including a better narrow-mode menu and animated side-menu. In the coming weeks and months, we’ll be posting additional updates, and logging issues in Git for the community to potentially look at.

Flutter: Introducing StatsFl, an FPS monitor for Flutter

As we begin pushing Flutter to more platforms such as Desktop and Web, it is becoming increasingly important to quickly and easily measure performance of your application. While the built-in performance monitor gets the job done, it leaves a lot to be desired in terms of readability and flexibility.

As the old school Flash devs we are, we remember the days when virtually every Flash application around would use the hi-res-stats package by mrdoob (yes, that mrdoob). It was extremely helpful to catch performance issues, and make sure your application was smooth (which in those days, was a solid 24fps!).

Currently nothing like that exists in the Flutter community. To help fill this gap, we’ve created StatsFl! Available now on pub.dev: https://pub.dev/packages/statsfl

Continue reading →

Flutter: The new ‘animations’ package explained

The Flutter team recently dropped a great new transitions package, based on the new Material 2 design spec, the somewhat ambiguously-named: animations package.

SharedAxis Example

They are super cool to look at and appear to be highly performant. The only issue? The examples they’ve provided with the package are pretty hard to follow (coming in at close to 1500 lines!) and there’s no code snippets at all in the README.

But fear not! This package is actually extremely simple to use once you clear away the noise, and can see how it works.

Continue reading →

Flutter: Simplify Platform & Screen Size Detection

In the never-ending quest to reduce boilerplate and DRY up our code in Flutter, we have noticed that using the MediaQuery class can be a bit cumbersome, and it’s also missing a couple of key pieces of information.

The issues we see are:

  • MediaQuery.of(context) is a bit verbose on its face
  • Checking for orientation especially is too long:
    bool isLandscape = MediaQuery.of(context).orientation == Orientation.landscape
  • There is no diagonal size parameter, so you can’t easily get the true screen size of the device, helpful for determining your form factor
  • There is no way to get the size in inches, which can be useful when thinking about breakpoints (for most people, 4.5″ is easier to picture, than 720 logical pixels)

To that end, we have small Screen helper class, that we use across all our new projects:

Continue reading →

Produce Awesome Content Without Blowing the Budget

Produce Awesome Content Without Blowing the Budget

The best game engine, code library, or CMS is meaningless without the stuff that goes into it. The stuff that hits you right in the heart. The most important part of any project. The content.

Content is the fun part. It’s where you get to connect with human beings. Content is the limelight. It’s king.

So how do you make content without blowing the budget?

Continue reading →