Believe the hype.

Image for post
Image for post
Photo by Howard Bouchevereau on Unsplash

I’m sitting in my office with my new Macbook Pro, doing the initial setup for Macbook Pro (16GB, 1TB, M1). The first setup for any of my devices is pretty grueling, as I pull in gigs and gigs of developer tools, clone a few git repositories, and install tools like XCode, Visual Studio for Mac, and Android Studio.

If you’re a developer, you know what this initial setup is like. About thirty seconds in, your fans hit 100% on your new device, and your room is filled with that new computer smell. …

How to get started as quickly as possible

Image for post
Image for post

Flutter for Windows has been in the dev channel for quite some time now, but some of us are getting more serious with our Windows development. If you’re creating a new Windows app, Flutter for Windows deserves some serious consideration. Google doesn’t recommend that you start rolling apps out for production usage for Windows just yet, but that doesn’t mean you can’t start playing around with apps today and then roll them out into production when that recommendation changes (like when Flutter for Desktop hits stable).

For now, though, we’re ahead of the curve (which is kind of where developers live anyway) so we might hit some rough edges when we get started using Flutter for Windows. …

How hard was it, and was it worth it?

Image for post
Image for post
Photo by Paul Hanaoka on Unsplash

It was pretty late at night, and I was working on an update to an app that I had released. Everything was looking pretty good, and I was just putting the final polish on the release. Then, I did a release build and deployed that to my phone. Almost immediately, the app crashed, with a Java JNI exception. …

The new beta includes some unexpected surprises

Image for post
Image for post
Photo by Florian Berger on Unsplash

Since this morning, after updating my Flutter beta install, it has been refusing to load any resources from HTTP with this error:

Unhandled error Bad
state: Insecure HTTP is not allowed by platform

If you’re here because you’ve been furiously Googling a fix, and you don’t care why it’s broken, and you just want it fixed, here’s what you can do:

  1. Navigate to your project
  2. Go to yourapp\android\app\src\debug\AndroidManifest.xml
  3. Add this line
<application android:usesCleartextTraffic="true">


4. Build your debug app and deploy it to your device of choice. It should work now.

Why is this happening?

Since a change in dart_sdk last month, outbound connections are checked to see if they are permitted to occur in plaintext HTTP. The commit that includes this change can be seen here. To be precise, this is the particular lines that are causing us…

Two common issues your app can do without

Image for post
Image for post
Photo by Charles Deluvio on Unsplash

We’re living in a time when every new technology company is almost guaranteed to create an app of their own. Perhaps in your very own startup, you’ve been asked to develop an app for customers to use. One of the most important components of a high-quality app is to have high-quality state management.

A few years ago, I would not have had any idea of what the phrase “State Management” was if you said it to me. Somehow I was making apps, websites, and software, while not understanding the first thing about the “state” that my app was in at any given point in time. Every time I did something to modify the state of my app, whether it be having a request that was still in flight (and showing a loading indicator, for instance), or handling errors gracefully, I paid no attention to how what I was doing was affecting the state of my app at any given time. …

Using static analysis to it’s fullest extent

Image for post
Image for post
Photo by Markus Winkler on Unsplash

Dart has a fairly good type safety system, as good as any other modern language system. But something I didn’t realize until yesterday is that you can configure the static analysis in Flutter and that it doesn’t come at it’s strictest level. Static analysis is a way that a program can be checked for validity without actually executing the program. It means that you can catch bugs before you even build and deploy the app.

How can I configure it?

Create a analysis_options.yaml file in the root of your project. Put this in it.

If you want you can take a minute, save that file, reload your project, and gawk at all the bugs it found (like I did). …

How Google ran the worst campaign

Orange-painted megaphone on orange background
Orange-painted megaphone on orange background
Photo by Oleg Laptev on Unsplash

When it comes to marketing or advertising your product, it’s important to get it right from the outset. In 2018, 163 companies in the United States spent billions on campaigns for their products. The intent of these campaigns is clear — try to get people to use your products so you can pick up more users or more sales.

The way that advertising works can be fairly simple. Find what someone wants and try to market that to them. A lot of targeted marketing works in this way. If you search for “blender,” then you will start to see ads for blenders everywhere. If the intent to purchase something is clear, and a business has a way of advertising this to you, then this method of advertising makes sense. It’s also a fairly open market. Businesses bid on what they are willing to pay per click or impression, and people who pay more have their ads higher up in a result listing. …

And what you can learn from it

Image for post
Image for post
Photo by Sarah Kilian on Unsplash

Preorders are a difficult thing. On one hand, it’s great for cash flow and to generate excitement for the device that’s coming soon. On the other, it’s hard to manage expectations for a device, and a logistical challenge (especially in these times) to deliver something by a certain date. In my case, my story began when I preordered the Galaxy Tab S7+, seeing that the release date in Australia was the 11th of September.

Now, I’m not completely blind to the world that we live in at the moment. Coronavirus has rocked the world and had an incredible cost in terms of human lives lost and has torpedoed production lines around the world. Logistics have taken a huge hit, assembly lines have been shut for months and unfortunately, we live in a world where delays to products are inevitable. …

There’s never been a better time

Image for post
Image for post
Photo by Art Lasovsky on Unsplash

You’re reading the title, and you think to yourself “I’m not a writer”. You’re a software developer, surrounded by screens and computers. Putting pen to paper, explaining to other people how to make software isn’t your speed at all and it’s not something you’re looking to get in to. I want you to know that, on a personal level, I hear you. I was exactly the same a year ago — the concept of writing a technical article repulsed me and actually made me worry. …

Image for post
Image for post
Photo by Eugen Str on Unsplash

If you’re like me, you’ve been enjoying using Flutter to make some really great apps lately. One of the things about using such a cutting edge framework is that you’re bound to encounter some potentially weird issues…without knowing exactly how to fix it.

I just spent 4 hours on the domain/default pair issue. In your build log it looks like this:

It’s not clear what is going wrong here. Looking up further in the build log gives us some more idea.

Can you spot it? It’s the last line. For some reason, Flutter is trying to recursively add our assets folder into our build, which is making the build break with a totally unrelated and nonsensical error. This issue tracks the problem, with a wide array of potential fixed (like moving your assets folder elsewhere, checking if you have .env …

Lew C

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store