Flickr/Yahoo! UX Failure

A long time ago I had a Flickr account. Then things changed and I no longer used, a lot of time has passed. But today, I decided, I could use a Flickr account.

So I go to Flickr, go to create an account. It directs me to Yahoo as you need a Yahoo account to do Flickr it seems. I create a Yahoo account. I’m redirect back to Flickr and asked to sign up.

I bailed.

This is bad UX. Needing an account with one service so you can create an account at another service is bonkers. I thought I was going to use the newly minted Yahoo details to login to the new and improved, revamped, worthy of my attention Flickr. But no.

Somewhere, there is at least one engineer silently weeping, perhaps more than one.

Elsewhere some manager is thinking they’ve made the world a better place.

One of them knows the truth.

Here is the truth: Make it easy for your users/community/tribe to love you. Else you lose them.

PS. Then I had to google how to delete a yahoo account.

Smart Folder – Flagged or Unread in Outlook for macOS

Just had to setup MS Outlook 2016 on a Mac, and wanted a smart folder (aka saved search) that shows only emails that are either unread or flagged.

To do this, click into the search box in top right of the Outlook window. The search toolbar will appear, select Advanced.

The raw query to use is:

(com_microsoft_outlook_flagged = 1) || (com_microsoft_outlook_unread!=0)

Then save the search.

Via: answers.microsoft.com

Review: Atomic Habits

I’ve bought the book Atomic Habits and written a short review of it.

Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad OnesAtomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones by James Clear

For me, there have been two items in “Atomic Habits” that have immediately made a difference in my life.

The first is in Chapter 6, under the heading “The Context Is The Cue”, the understanding and the realisations following my reading that our habits can be associated not with just one single ‘trigger’ but with the ‘context’ that surrounds a behaviour, have changed my day to day actions.

The second is in Chapter 7, on how ‘disciplined’ people structure their lives in such a way that they do not require huge amounts of willpower and self-control; has caused me to change a number of small things, and this has made a large impact for me.

Implementing these two things into my life have not required any ‘rocket science’ on my part, just some simple changes. Those simple changes have made an immediate, positive difference in my life.

James explanation of these two things, the examples he uses, have made sense of why, in the past, some habits have stuck for me, why others haven’t, and why certain habits I’ve tried to change or remove haven’t changed or been removed.

Thanks James!

PS. rest of the book is great, but those two things are what made the difference for me.

See my goodreads profile/review.

I Don’t vs. I Can’t

Just read this great article by James Clear How to Say No, Resist Temptation, and Stick to Your Health Goals where he discusses the difference between saying “I can’t do x” vs saying “I don’t do x”. The difference in outcomes is greater than I thought.

While he is discussing the use of this phraseology with regard to health and exercise, it strikes me as very applicable to other areas of life also:

  • I don’t miss my morning walk
  • I don’t do social media until after my morning work session
  • I don’t interrupt others

I will spend some time thinking about how best I can benefit from this “don’t vs can’t” thinking.

Concatenate Fields via ODBC Query

Today I wanted to concatenate some fields with some text. We are pulling some data from MYOB for import against a client record in SugarCRM and want to tidy it up as we go.

however, using concat didn’t work.

Thus this Stackoverflow answer came to the rescue with using {fn concat('some text', 'with more text')}

I’ve then nested it a little as this function only takes two arguments.

select  
  Customers.CreditLimit,  
  {fn concat (TermsOfPayment.Description,  
    {fn concat (' (',  
      {fn concat (Terms.BalanceDueDays, ' days)')}  
    )}  
  )} as TradingTerms  
from  
  Customers  
  join Terms on Terms.TermsID = Customers.TermsID join  
  TermsOfPayment on TermsOfPayment.TermsOfPaymentID = Terms.TermsOfPaymentID;

Git Workflow Explained Simply

Git is a Code Versioning System (aka CVS) .

It lets multiple developers, programers and project managers all work on the source code for a project with minimal stepping on each others toes. The workflow we use is as follows.

We keep the a Git repository in the cloud, typically in Bitbucket.

Each developer then keeps a local copy of the repository. The developer can then create a new feature branch to work on an issue. More than one developer can work on a project at a time, and multiple branches can co-exist at the same time. This allows for more concurrent effort to be deployed.

Show git master branch, feature branch and merge
Show git master branch, feature branch and merge

(This image from the git-guide linked below)

Typically then the QA will pull that feature branch to a test server and test the new feature/issue for completeness/quality.

If they are happy with the quality of work, they can then merge that feature/issue branch into the master branch.

Then on the production server we can pull the master branch and deploy it in production.

We link the bitbucket repository with JIRA and Confluence so that features, issues and bugs can be more easily tracked and discussed.

For more information on how to use git, see the git-guide.

Change Atom Command Palette Keyboard Shortcut

Testing out using Atom as a text editor on Mac OS. I found that the default keyboard shortcut for the Command Palette of shift-cmd-p doesn’t work for me. Dang!

So I used cmd-. to see what was going on. I could see that when pressing shift-cmd-p it wasn’t being caught (look at the bottom of the Atom window).

The steps to resolve this were: cmd-, I’ve gone to Preferences (aka Settings)> Packages > scroll to the command-palette package > scroll to Keybindings > un-tick Enable.

Then open up Preferences > Keybindings > click on your keymap file

This will opened up a file called keymap.cson. Then I added to the bottom of this file the following:


# remap the command-palette:toggle keyboard shortcut
'.platform-darwin, .platform-darwin .command-palette atom-text-editor':
  'cmd-p': 'command-palette:toggle'

This lets me use cmd-p as the keyboard shortcut to access the command palette.

Now I can start playing with it :)

Excel DATEVALUE Function

When a Microsoft Excel spread sheet has a column of date data in this format:

Nov 24 1995

Then the Excel function you’ll find useful is DATEVALUE

DATEVALUE function.

This formula here:

=DATEVALUE((TRIM(MID(R2,5,2))&"-"&TRIM(LEFT(R2,3))&"-"&TRIM(RIGHT(R2,4)))

Basically grabs the Day, then the Month, then the Year from the column, then converts it to a serial number that Excel recognises as a date. Then format this to display however you want it to.

Find JIRA Issues with Attachments

When you just know you’ve attached a file to a JIRA issue, but can’t find it, this is the search to do in Issues in JIRA

Replace PKEY with your project key.:

project = PKEY AND type != Epic and attachments is not EMPTY ORDER BY Status ASC

SSH and Private Key usage on Mac OS X

It’s very important that your private keys are kept secure and away from prying eyes.

A good place to keep your private keys is in the folder ~/.ssh as this makes it easier to manage (this is a subfolder of your home folder).

You then want to set the permissions of the private key file to 600.

chmod 600 ~/.ssh/privatekeyfile.pem

Then you can ssh to the server from the command line using:

ssh -i ~/.ssh/privatekeyfile.pem.pem root@fqdn -p 22

When SugarCRM Case Closed

Using the cases.date_modified is not the same as the date a case is closed, as the case may have been modified after it was closed.
Thus, the query below will return the date the case was transitioned to ‘Closed’ provided the cases.status field is being audited.

select
  CONVERT_TZ(cases_audit.date_created,'+00:00','+10:00') as 'date_closed',
  accounts.name as 'account',
  cases.case_number,
  cases.name as 'case_id'
from
  cases_audit
  join cases on cases.id = cases_audit.parent_id
  join accounts on accounts.id = cases.account_id
where
  cases_audit.field_name = "status"
  and cases_audit.after_value_string = "Closed"
order by
  accounts.name asc,
  cases_audit.date_created desc;

Note, you might get more then one row returned per case if the case was re-opened, also my code above assumes a timezone of UTC+10

I happen to be in the UTC+10 timezone :).

Export Evernote Notes to Apple Notes

Larry Salibra has a post on how to move notes from Evernote to Apple iCloud Notes.

His Applescript does a fantastic job of this, the only issue I had was that my iCloud account was named differently to ‘iCloud’, all I did to resolve that was to rename my account in Apple Preferences > Accounts back to iCloud while I did the export.

Found this via ipadinsight.com.

Now I’m as happy as Larry :)

Get the Weather From the Command Line

On Mac OS X or Linux (in fact anywhere you get the finger command) you can quickly get the weather.
Jared, in our office here, just showed this to me, neato! :)


finger brisbane@graph.no

I particularly like the one line weather report


finger o:brisbane@graph.no

graph.no

To get more info on how to use this, run this from your command line:


finger @graph.no