What is the ‘main thing’ in software development?

Software development is about solving problems. It’s about solving problems in an effective way that adds value. It isn’t about programming languages and writing code. Programming languages are tools. We use tools like Cloud compute to run our solutions, and we build solutions with tools like programming languages and frameworks.

It’s all about solving problems.

If you’re getting started in software development as a career and are putting all your effort into learning a programming language, remember that’s just a tool. It’s how you use it to solve problems which is the important part.

Serverless framework deploy for Java AWS Lambdas

The Serverless framework ‘serverless deploy’ deploys whatever .jar you have packaged and ready to go within your source project.

If you make local code changes but don’t re-build your .jar, serverless thinks you don’t have any changes to deploy:

$ serverless deploy
...
Serverless: Packaging service...
Serverless: Service files not changed. Skipping deployment...

If you’re building a maven-based project, ‘mvn clean package’ first, then run your ‘serverless deploy’.

Working with multiple AWS accounts

Using multiple AWS accounts under an Organization umbrella can be useful even at a personal level, for learning AWS features and self-training, it helps keep various projects partitioned. However, working with multiple accounts at a time can get complex, and on more than one occasion I’ve lost track of which account I’m actually working with.

If you’re working with api keypairs and don’t know which account the keypair is for, the following aws cli command is useful:

aws sts get-caller-identity

It shows you the following info:

{
  "UserId" : ... key id ...,
  "Account" : ... account id ...,
  "Arn" : ... the IAM ARN for the current userid

Samsung Picture by Picture (PBP) screen resolution support with MacOS

I recently just got a 4k Samsung monitor that supports Picture in Picture (PiP) and Picture By Picture (PBP) modes from multiple input sources, which is awesome because I tinker with a bunch of stuff on different machines at the same time. My 2015 MacBook Pro has no problem recognizing the unusual PBP resolution of half the width of a 4k display, but for my older 2008 Mac Pro that I use as my daily driver while I’m at my desk it stretches the resolution vertically which is not good. From this Samsung post here here it mentions the side by side resolution for 2 BPB inputs is 1920 x 2160. That’s definitely not a normal resolution, but the Nvidia web driver in my Mac Pro with a Nvidia 750ti doesn’t offer that resolution:

How to configure PIP/PBP size?

The way round this is to use SwitchResX to define a custom resolution. I’m running Mac OS X 10.11 on this Mac Pro, so I also need to follow these steps to temporarily disable SIP protection first in order to save the configs for the custom resolution.

To set a custom resolution of 1920 x 2160 – here I selected ‘Use simplified settings’ (which disabled a number of settings) and changed only the height/width and left all the other settings as default:

By default this set the vertical sync as 60hz and after rebooting the Display prefs didn’t pick this one up as a valid option. Dropping it to 30hz works through.

I also set a lower res to be more easily readable:

Save from menu bar, then it prompts to reboot to become active. After rebooting, open the Display settings in System Prefs, and now under the Scaled options for the monitor in PBP mode you’ll see the new custom resolutions available:

1920×2160 is almost too tiny to be readable for my eyes, but 1600×1800 is a comfortable resolution.