This Week: Startups that are hiring remotely in 2019

By Matt Button |  Feb 1, 2019  | product-development

A collection of 5 things from the week that I found interesting, am enjoying, or am working on.

This week:

  • The Competitive Advantage of Design (Philip Fierlinger)
  • How to get rich (without getting lucky)
  • Startups that are hiring remotely in 2019
  • 15 Things You Should Know About Product Managers
  • How website builders can differentiate themselves in a heavily commoditised market
Continue Reading...

This Week: Troy Hunt’s tips on personal finance for technology professionals

By Matt Button |  Jan 25, 2019  | open-source-software, finance, art, tdd

A collection of 5 things from the week that I found interesting, am enjoying, or am working on.

This week:

  • Sometimes Netflix preview images and descriptions get out of sync, creating amusing mashups
  • Troy Hunt’s tips on personal finance for technology professionals
  • Patrick McKenzie on: Should you choose a commercial license or donation model to monetise your open source project?
  • A great thread discussing when to practice TDD (Test Driven Development)
  • Blender 3D tutorial: Create a Modern Bedroom in Blender in 35 Minutes
Continue Reading...

How to scrape Yahoo Finance and extract fundamental stock market data using Python, LXML, and Pandas

By Matt Button |  Jan 24, 2019  | python, pandas, lxml, scraping, finance, featured

In this blog post I’ll show you how to scrape Income Statement, Balance Sheet, and Cash Flow data for companies from Yahoo Finance using Python, LXML, and Pandas.

I’ll use data from Mainfreight NZ (MFT.NZ) as an example.

The screenshot below shows what you can expect to get by following the steps in this blog post:

The first few columns of a Pandas DataFrame containing MFT.NZ Balance Sheet data

By following the steps in this blog post, you’ll also generate a DataFrame containing data from the Income Statement, and Cash Flow statement.

After creating Pandas DataFrames, I’ll show you how to export everything to an Excel file, so you’ll have output that looks something like this:

Continue Reading...

Are we there yet? Insights on how to lead by design - by Sam Bucolo

By Matt Button |  Jan 14, 2019  | design-thinking, design, innovation, book-notes

One of the books that I read over the summer break was “Are we there yet? Insights on How to Lead by Design” by Sam Bucolo.

For the first few years of Sam’s career, he worked as a design consultant. As he gained more design and problem solving experience, he came to realise that he was often getting the wrong brief from his clients.

Sam found that while companies could conceptualise new products or services, the sticking point was aligning this conceptualisation to their business models, which meant that time, and time again, projects significantly fell below expectation or failed completely.

These experiences led Sam to specialise in Design Led Innovation.

My notes:

There are three elements of Design Led Innovation:

  1. Customer value: This is the starting point, and is about being clear on who the customer is, and the problem that the business is solving for them.
  2. Management Mindset: The correct mindset to create a strategy which has been built around new insights about the customer.
  3. Strategic alignment: Ensuring that all business processes and systems are aligned with the customer’s problem.
Continue Reading...

How to rename categories in Hugo

By Matt Button |  Jan 13, 2019  | hugo

I’ve been using Hugo for my blog for the last few years, and recently published my first theme - Silhouette Hugo.

I recently received an email with the following question:

What is the simplest way for me to rename the categories Development and Golang into other names, like Projects and Gallery? Is this in partials or template or theme or where?

I figured that this might be a common question, so decided to share it in a blog post.

Here’s how to rename categories in Hugo, in the context of my theme.

Continue Reading...

Google Authentication with Python and Flask

By Matt Button |  Jan 5, 2019  | python, flask, google-authentication, google-api, google-drive, featured

In this blog post, you will learn how to create a Python app using Flask and the Google API which will:

  • Support Google Authentication with Python and Flask
  • Restrict access via an OAuth scope, so that the app can only view and manage Google Drive files and folders which were created by the app
  • Read and write files on the user’s Google Drive with Python.

By the time you get to the end of this blog post, you’ll have built a basic Google Drive file browser which looks something like:

OAuth Google Drive Scope

This blog post is divided up into sections which progressively build up an app which interacts with the user’s Google Drive. If you only want to find out about how to do user Authentication with Google and Python, feel free to stop there.

Continue Reading...

Tony Alexander Presentation Notes - things which affected the NZ housing market over the decades

By Matt Button |  Jan 2, 2019  | investment, finance, property

I recently attended a presentation by BNZ’s Chief Economist, Tony Alexander.

One of the topics that really caught my attention was his perspective on the things that influenced the housing market over the decades, from the 1950’s until today.

I wrote up a bunch of notes to summarise his points.

If you’re interested in getting a bit of perspective on the NZ property market, and some of the things that caused it’s near-relentless movement upward over time, then read on.

Continue Reading...

InvalidCypherTextException when reading an encrypted DynamoDB table which has been restored from a backup

By Matt Button |  Dec 5, 2018  | aws, dynamodb, encryption

If you attempt to read encrypted data from a DynamoDB table which has been restored from a backup to a DynamoDB table which doesn’t match the original table name, you may see the following errors:

TL;DR the restored DynamoDB table must have the same name as the original DynamoDB table, and be restored to the same account that it was originally created in.

Continue Reading...