Easier AWS CLI with Docker

Here is a handy blog post that shows how to simplify the installation and running of the Amazon AWS command line commands, using Docker.  With the Dockerfile like this:

FROM python:2.7
ENV AWS_DEFAULT_REGION='[your region]'
ENV AWS_ACCESS_KEY_ID='[your access key id]'
ENV AWS_SECRET_ACCESS_KEY='[your secret]'
RUN pip install awscli
CMD /bin/bash

One can build the image and run the container as follows:

$ docker build -t gnschenker/awscli
$ docker push gnschenker/awscli:latest
$ docker run -it --rm -e AWS_DEFAULT_REGION='[your region]' -e AWS_ACCESS_KEY_ID='[your access ID]' -e AWS_SECRET_ACCESS_KEY='[your access key]' gnschenker/awscli:latest

Obviously, DO NOT hardcode your Amazon AWS credentials into an image, which will be publicly available through DockerHub.

Once the AWS CLI works for you, you can add the command to your bash aliases, to make things even easier.

GPL : Matt Mullenweg and Automattic vs. Wix

The General Public License (GPL) has been the source of many discussions since it was created in 1989 (with a few versions in following years) and applied to numerous Open Source Software projects.

Currently, there is one more such discussion going on.  It was kicked off by Matt Mullenweg, the founder and CEO of Automattic, the company behind WordPress:

Anyone who knows me knows that I like to try new things — phones, gadgets, apps. Last week I downloaded the new Wix (closed, proprietary, non-open-sourced, non-GPL) mobile app. I’m always interested to see how others tackle the challenge of building and editing websites from a mobile device.

I started playing around with the editor, and felt… déjà vu. It was familiar. Like I had used it before.

Turns out I had. Because it’s WordPress.

He proceeds with the open letter to Wix:

Dear Wix,

This explicitly contravenes the GPL, which requires attribution and a corresponding GPL license on whatever you release publicly built on top of GPL code. The GPL is what has allowed WordPress to flourish, and that let us create this code. Your app’s editor is built with stolen code, so your whole app is now in violation of the license.

What does Matt want Wix to do?  Very simple:

Release your app under the GPL, and put the source code for your app up on GitHub so that we can all build on it, improve it, and learn from it.

Did Wix respond?  Yes, they did.  First, one of their lead engineers, Tal Kol, wrote this blog post.  I think it’s quite sensible and boils down to a misunderstanding.  Or so I read it:

I apologize if I appeared to take credit for somebody else’s work. This was definitely not my intention. I think you guys are doing a great job.

Second one though is a bit less so, written by Wix CEO Avishai Abrahami.  While trying to appear friendly and casual, it does dodge the whole issue of the GPL violation, misrepresents the facts on the branding, and ends with an awkward invitation for a coffee.  WP Garage has a good summary of why this response is weak.

Here are a few more resources with commentary that help to understand the issue:

Personally, I am a big fan of GPL, Automattic, WordPress and Matt Mullenweg, who I had the opportunity to meet and talk to back a few years ago.  But as a CTO of a startup (and not for the first time), I have to admit that Open Source Software is difficult when it comes to business.  It requires a huge effort to make a company understand what Open Source Software is, what are the intricacies of the major licenses, and what are the consequences of using Open Source Software for different kinds of projects (internal tools, client projects, company products and services, etc).

Here are the important points that I want to highlight in regards to this conversion:

  • If you are using Open Source Software, make sure you understand the licensing and the culture behind it.
  • If you made a mistake, admit to it and figure out a way to resolve it.  Dodging or finger-pointing is not a resolve.
  • Legal action is not the only option.  Often, it is not even the most preferable.
  • Be nice to people. :)

I’d like to finish with this tweet, which I think highlights the most important point.

P.S.: Some people say that GPL has not been enforced in courts.  This page lists a few cases in several countries, which provide examples of the contrary.

base32 advantages over base64

Andrey shares some of the advantages of base32 over base64 encoding:

  1. The resulting character set is all one case, which can often be beneficial when using a case-insensitive filesystem, spoken language, or human memory.
  2. The result can be used as a file name because it can not possibly contain the ‘/’ symbol, which is the Unix path separator.
  3. The alphabet can be selected to avoid similar-looking pairs of different symbols, so the strings can be accurately transcribed by hand. (For example, the RFC 4648 symbol set omits the digits for one, eight and zero, since they could be confused with the letters ‘I’, ‘B’, and ‘O’.)
  4. A result excluding padding can be included in a URL without encoding any characters.

Personally, I don’t think I’ve heard about base32 until today.

Automattic and .blog domains

I was very excited when six years ago Automattic, the company behind WordPress, became a domain registrar.  Registering, renewing, and managing domains is still a painful process today as much as it was six years ago.

So, what have the company decided to do with its new super power? Well, they’ve integrated domain registration with their WordPress.com hosted blogging service.  And now they are promoting the new .blog domains:

Millions of short, easy to remember domains will be available when the .blog domain goes live November 21. Apply now to secure the perfect domain for your blog.

This sounds cool, until you check the prices.

leonid.blog

30 EUR per year is not cheap.  But an additional 220 EUR early application fee on top of it makes it a no deal for me.  I wonder how many bloggers out there will go for this.

I understand that managing a top level domain is not an easy thing to do.  Everything from infrastructure to technical support costs money.  But at those prices, I think I’ll wait until the technology gets cheaper.  Because it inevitably will.

15 Year Blog Anniversary

blogging

Today is the 15th anniversary of this blog.  As most of you know, 15 years in technology is forever.  15 years on the web is even more so.  Here are a few highlights to give you a perspective:

  • First post dates back to October 26th 2001.  It wasn’t my first blog post ever.  It’s just that the earlier history wasn’t migrated into the current archives.
  • Archives page provides access to posts of every month of every year, except April and May of 2009, which were lost during a major outage at a hosting company at the time.
  • The blog survived a multitude of migrations between blogging applications and their versions (static HTML diary, Nucleous CMS, Blog:CMS, WordPress), design changes (a dozen or so WordPress themes), and hosting companies (from a home server to the current Amazon AWS setup).
  • Way over 8,000 posts written.  Hundreds of comments, pingbacks and trackbacks received.  These varied across a large number of topics, anything from personal, work, technology, movies, photography, Cyprus, and more.
  • Millions of page views.  Hundreds of thousands of unique visitors.
  • Millions of blocked SPAM comments.  Millions of (mostly automated) attacks, varying from SQL injections and dictionary password attacks to a some more advanced techniques targeting particular pages or WordPress and its plugins vulnerabilities.
  • A variety of content reorganizations – posts, pages, categories, tags, short codes, templates, plugins, widgets, links, etc.
  • A variety of integrations – web services, social networks, automated postings, aggregations, etc.
  • A variety of monetization options – from “this is not for profit”, to ad spaces, to contextual ads, to sponsored content.

Have a look at some versions saved by the Internet Archive, dating back to 2004.

So, what have I learned about blogging in the last 15 years?  Quiet a bit, it turns out.  Here are a few things that I think are important enough to share:

  • If you don’t have your personal blog yet, go and start now.  It’s well worth it!
  • Make sure you own your content.  Social networks come and go, and when they go, chances are, all your content goes with them.
  • Don’t stress too much about the format, styling, and scheduling of your blogging.  If you do it long enough, everything will change – the topics you write about, how much and how often you write about them, how your site looks, etc.  Start somewhere and iterate.
  • Don’t go crazy with features of your blogging platform.  Sure, there are thousands of plugins and themes to choose from.  But all of these change with time.  When they go away, you will have to either support them yourself, move to newer alternatives, or loose them.  Neither one of those options is pleasant.
  • Things die.  They disappear and then they are no more.  That’s life. This happens.  Don’t worry about it.  Do your best and then move on.
  • Have fun!  It’s your personal place on the web after all.  Try scheduled posts to get into the habit.  Try planning to get a better idea of what you want to do.  But if it doesn’t work or becomes too difficult, move on.  As I said, it’s your personal place and you don’t owe anybody anything.  Do it for yourself.  Others will come and go.

Here is to the next 15 years! :)

beer

Using tables with Markdown in Redmine

We use Redmine for our project management needs in the office.  It works pretty well, but there are, as with anything, a few rough corners.  One thing in particular that I was trying to figure out is how to use tables in Wiki pages, issues, etc.

The official documentation says that tables are not supported and you need to use HTML.  Yuck.  I do, of course, know how to mark up tables in HTML, but that’s definitely not the most pleasant of experiences.  Especially if you need to modify them later.  So I dug deeper.

It turns out that the documentation is outdated.  Modern Redmine versions (we are on 3.3.0) use the redcarpet library for parsing Markdown, which supports tables just fine.  Here is an example of the Markdown that you can use in pretty much any textarea field:

| Header 1     | Header 2     |
| ---          | ---          |
| Row 1 Cell 1 | Row 1 Cell 2 |
| Row 2 Cell 1 | Row 2 Cell 2 |

And it’ll render as a table just fine. The dashed line separating headers should have at least 3 dashes for the parser to understand it correctly. But you can extend the dashes for the whole width of the column.

tagbar-phpctags : Vim plugin for PHP developeres

phpctags

If you are using Vim editor to write PHP code, you probably already know about the excellent tagbar plugin, which lists methods, variables and the like in an optional window split.  Recently, I’ve learned of an awesome phpctags-tagbar plugin, which extends and improves this functionality via a phpctags tool, which has a deeper knowledge of PHP than the classic ctags tool.

Once installed, you’ll have a more organized browser of your code, with support for namespaces, classes, interfaces, constants, and variables.