Finding Alternative Mail Clients for Mac

I’ve had a nearly perfect experience using Postbox (https://www.postbox-inc.com/).  The interface is slick, the license is per-user rather than per-machine, and it doesn’t bitch at me when I’ve deleted an email and immediately close the application.  And it turns out that their support is excellent…

An employee has started using Microsoft Outlook 2016 for the Mac.  At our company we haven’t been happy with the capabilities of using any other product for calendar invitations.  It turns out, though, that shiny new Postbox coughs giant hairballs when trying to download and read invitation emails from Outlook 2016.  It just simply fails to display the email or mark it as read.  Postbox support gets kudos for their efforts on diagnosing the problem, but acknowledge I’m experiencing something wack.  They’ve offered a refund.

I’ll be investigating other options forthwith…

Considering AWS RDS MySQL

Amazon AWS RDS costs:

Payment Option Upfront Hourly Monthly* Effective Hourly** Effective Monthly On-Demand
No Upfront $0 $.017 $10.22 $0.014 $10.08 $0.017 per Hour, $12.24/month
Partial Upfront $51 $.006 $4.38 $0.012 $8.57
All Upfront $102 $.000 $0.00 $0.012 $8.50

Some common things you might want to be able to do:

Change the size of a the storage after configuring the instance

Yes: http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ModifyInstance.MySQL.html

Review: JavaScript: The Good Parts

JavaScript: The Good Parts Book Cover JavaScript: The Good Parts

Quotable Quotes:

“There are ascending performance costs because Moore's Law doesn't apply to batteries.”

“I have never seen a piece of code that was not improved by refactoring it to remove the continue statement.”

I really like the idea of pointing out the “good parts” of a language, encouraging good coding practice by using the bits that make sense. This book takes just such an approach, and is unabashed about highlighting the parts of the language that the author thinks are bad, such as the poor scoping rules for variables.  More importantly, the book has proposes best practices for working around the limitations, as well as utilizing features in an effective way.  For example, utilizing a single global object instead of a pile of individual global variables reduces potential naming conflicts with other modules.

For developers who already know one or a dozen other languages already, this is a refreshing approach to getting up to speed in a language that has a number of features that are not in common with other languages.

A Shortage of Books on Tomcat

If I’m not wrong to assume that a book that’s primarily on Apache’s web servlet Tomcat project should have “Tomcat” in the title, this list of books and their publication years suggests that nobody’s writing new books or updating their old ones.  By the way, I’m using Tomcat 8, for where there seem to be no books.  Even Amazon.com has no English-language books with “Tomcat 8” as part of its title.

Beginning JSP, JSF and Tomcat: Java Web Development
2012

Apache Tomcat 7 Essentials
2012

Apache Tomcat 7
2011

Tomcat 6 Developer’s Guide
2009

Tomcat: The Definitive Guide, 2nd Edition
2007

Professional Apache Tomcat 6
2007

How Tomcat Works: A Guide to Developing Your Own Java Servlet Container
2004

Booting Linux on Mac Hardware

There are two ways to boot flavors of Linux on Mac hardware:

  1. Boot from an external device, such as a USB stick
  2. Dual-boot

Per answers like those provided at How-To Geek,  the fundamental problem of booting non-Mac operating systems on Macs is the unique Apple EFI code.

My situation is complicated by having a 32-bit EFI on the original Mac Pro, which requires a hack even to boot a modern Mac OS X version.

Unfortunately, I’ve had little luck even on my recent Macbook Pro trying to boot from a USB drive.  While Linux succeeds in the initial boot phase, it gets lost trying to start XWindows.

Supposedly,  rEFInd is the relevant tool.

Technology Stacks Used by Other Companies

I really like Stackshare’s listing of technology stacks used by various companies from big to small, many of which we’ve heard of.

It’s not so much useful to take a large company’s usage of a technology as an endorsement.  Amazon, for example, wrote their original web technology in PHP, and still has significant chunks left.  According to an insider, PHP is “banned” for new functionality on the grounds that PHP can’t be adequately secured.

It is useful to see where new technologies have been adopted, and get some context on how other companies are evolving their technology.  After all, there is something of a network effect for any technology or product: more users means more developers and support which means more users, etc.

Review: Learning Docker

Learning Docker Book Cover Learning Docker

1-Getting Started with Docker

Installing Docker via AWS Elastic Beanstalk or on a local Linux instance.  Brief reference to other container systems on Windows and Mac.

2. Handling Docker Containers

3. Building Images

4. Publishing Images

5. Running Your Private Docker Infrastructure

6. Running Services in a Container

7. Sharing Data with Containers

 

Detailed.

Experimenting with Google Compute Engine

I must say I’ve been happy with Amazon Web Services.  I utilize accounts both for business and personal, and I’ve been very pleased with the progress of their development of additional services, including SQS, SES, and RDS.  I’ve been aware of some of the holes in the stretched pizza dough, but like many consumers, there’s no reason to evaluate other options until things actually get painful.

To be clear, there have been points where the pain has come close to inspiring me at least to see what else is out there.  Some examples come to mind:

  1. If you stop or reboot a running instance— which obviously stops your production instance— you’re required to confirm your intention.  If you create a new machine image from a running instance— which in not-at-all-an-obvious way stops your instance— there’s no warning.
  2. If you use the Amazon Web Services console to manage your various tools, you’re shown only the obscure initials for the services— EC2, SES, S3.  If you try to manage the administrative logs, you’re shown only the fully spelled out service names.
  3. Meeting all the recommended security points on their checklist requires that you turn off the default login.  But if you already have a retail account connected with your AWS account— which is encouraged and can’t be separated— then you must use the default login.

The pain arrived today.  According to AWS billing records, my otherwise innocent micro instance had been spending several days last month spewing obscene amounts of data for an unknown reason to an unknown destination, racking up a huge bill.  While chances are this is something I might have been able to do something about, there’s little evidence immediately available to even corroborate that this data actually transferred.  I haven’t submitted a ticket yet to Amazon to see if there’s anything they can do to, at a minimum, explain what happened.

In any case, this has inspired me to evaluate deploying my software on other platforms.  It’s certainly advantageous to at least be very clear on the extent to which you’re committed to a vendor.

I’ve begun separating the actual requirements for the services I use from the niceties that AWS has been providing.  To wit:

  • SSH keys to access from any terminal and SFTP service

Niceties from AWS I’ll probably miss:

  • EC2 (instance) roles
  • AWS command line tools to talk to S3

Niceties from Google I might learn to appreciate:

  • Save money on instances that stay up without having to pay for reserved instances
  • Customizable instance sizes
  • Automatic detailed monitoring stats

Here are some existing comparison articles that have been useful:

http://cloudacademy.com/blog/ec2-vs-google-compute-engine/

 

Review: Introducing Maven

Introducing Maven Book Cover Introducing Maven

Introducing Maven offers comparisons with Gradle, Ant, Ivy, then explains the tasks that can be performed with it, and details of configuring a pom.xml project file.

If I’m going to read a whole book on a technology, I’d like a bit more depth.  Why does this work, rather than just how it works.  While following the examples in the book, I was able to learn how to build configuration files and utilize Maven.  But a different book might have provided more underpinnings: what is the fundamental paradigm that will obviate the need to go through tutorials and practice.

MySQL 5.7.9

Mysql 5.7.9 has some additional security features that are at least useful for slamming your head against, if not actually improving your security.

  1. There’s a default password set for ‘root’ when first running the server.  The password is not generated as a result of the installation as the documentation claims, but only when the server is actually started.  Don’t go hunting for it until you’ve started the server.
  2. There’s a new default password security policy.  The current setting can be viewed with this query:
  3. mysql> SHOW VARIABLES LIKE 'validate_password%';
    +--------------------------------------+--------+
    | Variable_name                        | Value  |
    +--------------------------------------+--------+
    | validate_password_dictionary_file    |        |
    | validate_password_length             | 8      |
    | validate_password_mixed_case_count   | 1      |
    | validate_password_number_count       | 1      |
    | validate_password_policy             | MEDIUM |
    | validate_password_special_char_count | 1      |
    +--------------------------------------+--------+