Copyright 2017-2018 Jason Ross, All Rights Reserved

Star InactiveStar InactiveStar InactiveStar InactiveStar Inactive

Using the requests-oauthlib package in Python to obtain an OAuth2 token doesn’t always work. If you’re using the standard back-end example code and calling some APIs then you may receive an error that simply states:

“invalid_client”

The solution to this problem is fairly simple but can be hard to find, so how do you fix it?

Star InactiveStar InactiveStar InactiveStar InactiveStar Inactive

Recently I started getting spam emails from my own web site’s enquiry page; a regular delivery of emails from a variety of email addresses. I decided to look into the best way of stopping them.

Star InactiveStar InactiveStar InactiveStar InactiveStar Inactive

There are many way to gauge the quality of software – some are scientific, like cyclic complexity, and others less so. One of the less scientific methods is to look through the comments and see how many times TODO, HACK and similar tags appear. The more they appear, the lower the probable quality of the software.

You might wonder why I think this – after all, surely TODO is just an indication that the developer(s) were being forward-looking and planning for the future, leaving suggestions for themselves or other developers when the time comes to make changes. Similarly HACK is an admission by a conscientious developer that the code works, but could be improved upon; a humble gesture by a developer who knows that they’re not perfect, and a promise that they’ll return at some time in the future.

It might appear to be the case, but the reality is almost the complete opposite.

Star InactiveStar InactiveStar InactiveStar InactiveStar Inactive

If you’re using AWS Cognito User Pools for user authentication in your application, there’s a good chance that eventually you’ll want to start using social identity logins. This will let your users log in to your application using their social media accounts, or their corporate credentials. In turn this means users don’t have to worry about creating another account for your system. You can also work with corporate clients to use their access control processes allowing only authorized staff access to your systems.

This can all make things much more convenient for your users, but it means there are some things you need to consider when you’re developing your system.

Star InactiveStar InactiveStar InactiveStar InactiveStar Inactive

When your software has third party dependencies you’ll normally develop using the latest versions of those dependencies. This makes sense; the latest versions should have all of the latest features, bug fixes and security fixes, and during development it’s quite easy to handle upgrades to your dependencies.

Imagine then that you’ve developed a system, and you’ve released it. Of course, as you get closer to releasing your application you’ll generally fix the version numbers of the dependencies so that you can precisely control what gets deployed to your system.

Imagine your surprise then, when you run a build with some minor change, and it fails with a list of complaints about dependencies.

Or imagine you’re using a language like Python, where dependencies are downloaded during installation, and one day your installer suddenly starts failing even though it used to work. Again it’s complaining about dependencies.

What’s gone wrong?

Star InactiveStar InactiveStar InactiveStar InactiveStar Inactive

Test code is an important part of the software development process – it can drastically improve the likelihood that the system that gets deployed actually does what it’s supposed to do. All of the test code, from unit tests through to acceptance and performance tests plays an important part in the validation of the system.

So, having gone to the trouble of creating all of these tests and watching as they help detect bugs in the system, it doesn’t seem to make sense to just dump them as soon as your code leaves the test environment. If the test code was useful in the development environments it should also be useful if you need to find bugs in production So obviously your test code should be included in the deployment packages and should be deployed alongside your software.

Or should it?

Well, there go the new year's resolutions!
Star InactiveStar InactiveStar InactiveStar InactiveStar Inactive

Most New Year’s Resolutions fail within the first few weeks of the year. Now that those weeks have passed, and you’re feeling bad about not exercising, eating that chocolate and washing it down with the beer or wine you promised you wouldn’t have, why not pick up a few suggestions that you MIGHT actually stick to?