In my Go Plain manifesto, I said that the first thing I plan to deal with is ubiquitous plaintext capture solution.

So here I am, trying to deal with it, having some success on the Mac, mostly failing on mobile…

This post is part 1 of several posts on the subject of plaintext capture. I am dividing it to parts because it is still work-in-progress, and I wanted to share as I go along.

To reiterate and elaborate, my expectations for a “ubiquitous plaintext capture solution” include:

Available across all my devices. To prioritize: MacBook, Android phone, iPad, Windows laptop.

Sync “captured items” across all said devices, given connectivity. Handle poor connectivity with dignity – we are talking about plaintext files here. Handle sync conflicts gracefully.

The act of “capturing a piece of information” must be totally frictionless. This means as few clicks and taps as possible to get to “capture mode”. No messing with filing and categorizing a “captured item”. It should just be there, waiting for when I’m ready to deal with processing it.

Now, I can’t say I was unhappy with the free hosting on meteor.com, but along with this Galaxy release they also decided to shutdown the free hosting on meteor.com. So I had no choice, but to migrate my Kambatz app.

I am aware that there are multiple Meteor hosting options out there. I am going with Galaxy, for now, because:

It looks like the path of least effort 🙂

I did not see other viable free options, and this seems to be affordable.

When Galaxy was launched on October 2015, I watched a talk by MDG’s Matt DeBergalis on AWS re:Invent about the Galaxy architecture. It’s built on top of AWS Elastic Container Service (ECS), and it was fascinating. If I can have a chance to experience it from some perspective (e.g., an end-user), maybe I can learn more about it. In any case, the alternative I had in mind is to set up my own Meteor-in-Docker on AWS-ECS, to minimize costs, so this seems pretty close to that. Maybe if I later transition, it will be smoother 🙂 .

Supposedly, since I migrated before March 25, I should get a $25 credit on my Galaxy account 🙂 . Haven’t seen it yet though.

One thing to keep in mind is that Galaxy does not include MongoDB hosting. You’ll need to find another place to host your MongoDB, like mLab.

In the previous post, I announced that I am ready to reinvent my personal productivity system.

Today, I present Go Plain: My simplicity-driven personal productivity system. Well, it’s not yet a “personal productivity system”. It’s the working title for my work-in-progress system, and this post is a high-level “manifesto” for this system. I use “manifesto” here loosely, and mostly mean “high level roadmap and requirements”. Just thought it was a fun word to use 🙂 .

You can refer to the Go Plain project page for an always up-to-date list of posts related to this project.

I do my best to keep my addiction controlled. Under normal circumstances, I don’t tamper with my “productivity system”, beyond minimal maintenance, and the occasional incremental targeted workflow improvement.

The issue with the statement above is an underlying assumption that “the system is mostly good, and fits my current situation in life most of the time”. That assumption has been overwhelmingly false for a little over two years now.

These days, I use Python 3 without much thought for small scripts that are intended for personal use, with few dependencies. This works fine, as long as I don’t reach a point that I want to use that library that doesn’t support Python 3, and then it’s a PITA…

If I want to write something that I want to share, on the other hand, choosing Python 3 is not so obvious. I want to use Python 3, because it’s the “Right Thing To Do”. I don’t want to be that “library that doesn’t support Python 3 and is someone’s PITA”. But I also want to have my stuff accessible to the masses that are still working only with Python 2, for whatever legitimate reason they may have. Like this, and to some extent this.

I wish there was an easy way to do just that – write beautiful, idiomatic, Python 3 code, while maintaining Python 2 compatibility.

I want to write beautiful, idiomatic, Python 3, and maintain Python 2 compatibility – it this too much to ask?

Yes, you can say that Six library is a solution for writing dual Python 2 & Python 3 code. But would you argue that it grants my wish for “beautiful, idiomatic, Python 3 code”? If you think it does – please show me some examples!

Maybe you can also claim that 3to2 is a viable solution. I don’t know – I haven’t tried yet with complex real-life use-cases. Have you? Can you say this is a feasible path to take? How well does it handle the newest shiniest Python 3 stuff? What’s the development workflow around it? What do you do to catch and fix the edge-cases it doesn’t handle well, without ruining the original code with version-aware crap?

Are there other viable options? Anyone doing this with a large-scale projects, and is willing to share the approach and experience?

The Meteor site has a tutorial around building a “ToDo App”, in one of three flavors – Blaze, Angular, and React.

I’m not quite sure what it means to choose one of these flavors (see more in the feedback section). It looks like Blaze is some sort of a default, or the recommended one, based on some links pointing directly to it, and the fact that it is the first in the list. I’m already using Blaze in the Meteor intro Coursera course, so to spice things up, I randomly decided to go with React for this tutorial.

Do read on for the an exciting and detailed accounting of my step-by-step experience with the tutorial! 🙂 For your convenience, I have shared my tutorial implementation in a GitHub repository. It shouldn’t be very different from the official Meteor tutorial repository, but I took the liberty to add some tweaks of my own.

tl;dr: The tutorial was excellent. It is well structured. Things worked as expected. It is clear and concise. I feel I learned a lot in a short time. I do have some feedback to share, about the lack of clarity about Blaze vs. Angular vs. React, the mobile section, and the insecure defaults that are built-in.