Tools of the trade

I got a question about moving to Hugo and I started to write a short answer but … something happened and I ended up with this “monster post”, slightly longer that "short" !!

Some background

Before I go inte detail about everything I better give you some background about myself, what I do and how I want things to work.

First of all, I work as a lecturer at the Department of Computing Science at Umeå University where I teach courses like C, Java, Python, Object-Oriented Programming, Operating Systems, Programming Languages, Programming for K-12 teachers, databases, etc. With that list you would guess that I spend a lot of time programming … unfortunately that is far from being true. Reality is that it has been way too long since I wrote a decent sized program. What it really means is that I need to produce a fair amount of slides, lecture notes, course information, material for online courses, etc. All containing text, images and code snippets. And of course a steady stream of emails. I usually publish stuff either on the horrible CMS system the university uses, converting stuff to simple HTML files, or use a couple of simple scripts that converts markdown into HTML which are then uploaded to the department server.

On my spare time I spend a fair amount of time taking photos, playing with photos and trying to become a better photographer. Most of the time I publish a couple of photos at the time but sometimes I take photos at some event and publish 250-500 photos at the same time. Sometimes I write a blog post and sometimes I just want to fire off a few quick words.

In other words, while I enjoy tinkering with different programs/systems trying to get them to do things the way I like things to get done, I don’t have the time or interest to spend my time doing this. It’s way more fun to create content instead. So I have been trying to find tools that make my day as smooth as possible, leaving me time to do the stuff I really enjoy doing.

Tools for content generation

A few words about the main tools I use:

  • 1Password (macOS, iOS) - for all the passwords, excellent tool that makes it easy to find/use passwords on all devices I use. Note: I'm not using their service for syncing, instead I use plain old wifi-sync (at home).
  • Adobe Lightroom (macOS, iOS) - not my favorite program and I would like to use something else but at the moment I don't have the time to switch to something else.
  • Apple Photos (macOS, iOS) - it's getting better, I use it mainly for handling photos from my iPhone and have a mobile archive of my photos.
  • Apple Keynote (macOS, iOS) - for creating some of the slides I need. OK, but usually slow/cumbersome for the way I want to work.
  • Bear (macOS, iOS) - very nice note taking app with tag based organization. Uses markdown for formatting.
  • BBEdit (macOS) - the editor I've been using for the last 25 years or perhaps even longer. I spend a considerable amount of time in this app each week. I use it for code and writing markdown.
  • BusyCal (macOS) - yep, I need to know when/where I’m supposed to show up. The standard macOS Calendar app adds too much friction so I needed to find something else. I know that Fantastical is supposed to be the best but I like BusyCal better.
  • Deckset (macOS) - for creating slides by writing markdown. Very quick for creating and editing slides, perfect when the slides include code snippets, can't do everything Keynote can do but usually way faster to work with.
  • DevonThink (macOS, iOS) - for storing all the info. Also handles markdown in a reasonable manner.
  • MailMate (macOS) - it might not be the prettiest program in the world but this is the email client I keep coming back to. Highly recommended ... and if I need rich-text emails (very rare thing) I can write in markdown to get HTML formatted emails. But the perhaps most important reason to use MailMate: you don't need to top-post !!!
  • Marked (macOS) - indispensable tool if you write in markdown and need to convert it to some other format.
  • MarsEdit (macOS) - for writing blog posts.
  • OmniGraffle (macOS) - for illustration, if you need to make illustrations with circles, arrows, text, etc., you really need OmniGraffle. Trust me, just buy it. There is an iOS version but I haven't had the need for it yet.
  • OmniFocus (macOS, iOS) - yeah, I need to keep track of the things I supposed to do.
  • Python (macOS, iOS, Linux, whatever) - my favorite programming language. For quick and dirty automation as well as longer programs.
  • SpamSpieve (macOS) - the best spam filtering tool available, period.
  • Tower (macOS) - git client, most of my stuff end up under version control using git. Yes, I use the command line also but sometimes it's really nice to do stuff in a graphical user interface. If I need to do something on iOS I use Working Copy.
  • Ulysses (macOS, iOS) - for writing longer stuff, like this text. Nice, stable and uses a markdown like syntax.

There are, of course, several other programs I use also but these are the ones I'm very likely to use every week, perhaps every day.

Markdown

As you can see from the list above, markdown is a major theme. Of the stuff I write, excluding code, at least 95% is in markdown format. I tend to use MultiMarkdown or Github flavored markdown, I'm not very fond of the extensions to markdown made by Bear and Ulysses and try to avoid using those modifications. I mostly use BBEdit for writing, at least when a considerable part of the text are code snippets.

The remaining 5%? LaTeX

“But, but, what about sending stuff to people who only knows how to use Word?” Simple, write in markdown and use Ulysses or Marked to convert to DOC format.

Where I used to publish stuff

For obvious reasons most of the stuff I create end up on some server at the university and there isn't much I can do about that. But for private stuff I used to have several domains and places where I published stuff, for example wordpress.com, several wordpress.org sites, tumblr, flickr, smugmug, ipernity, Picasa, etc.

As you can imagine it was a huge mess with stuff all over internet. A few years ago I decided to start consolidate everything in one or a few places. The major reason is that I wanted to have better control of where things were, making it easier to reuse and refer people to. So I started to shut down sites, move things to other sites, etc.

In addition to this I also started to get very irritated about Facebook. I liked the interaction with friends and acquaintances, but in 2015/2016 I started to get quite irritated and upset by the posts in my timeline. Instead of some “friendly bantering between friends” I could see more and more … let’s say “less informed opinions uttered without thoughts or fact checking” - you know what I mean. Those posts in addition to a large number of reposts of stupid videos, reposts of information that was obviously fake, etc got me feeling quite angry each time I checked my FB timeline. In addition, I got the impression that I could see more ads and posts that I wasn’t interested in, mostly from companies that I had no relation to, and less post from my “friends” - the main reason why I was using Facebook in the first place. So in early 2016 I started to cut back on my Facebook usage … but since I missed the interaction part, I started to look around for alternatives.

IndieWeb

In 2017 I started to see the name IndieWeb in a few places. I decided to take a closer look and discovered that I liked what I was seeing. I started to set up things but quickly got frustrated. The reason was that the ideas, implementations, and the tools was not clearly described and setting up/using things involved a lot of trail&error, guess work, the use of somewhat frail pieces of software, etc. Something I didn’t want to spend my time on. While I fully support the IndieWeb movement and appreciate that people are working on this it’s not something I want to spend my time on at the moment, I prefer to try to create content instead. I’ll probably get back into IndieWeb at some later time.

My plan

My first idea of solving my problems was to move everything to one single site but I knew from previous experiences that this wouldn’t work - it’s usually quite difficult to set up a site/system for blogging while at the same time using it for tutorials and photo galleries. Instead I decided on a single domain with sub-domains for different purposes using different tools. Making it possible to fix/move things when I had the time and without have to think about types of information. My idea was to have the following sections:

  • General info about myself
  • Blog
  • A micro blog - although I didn’t know that it was called micro blog at the time.
  • A photo gallery for photos I really liked
  • A tutorials section

Over time this was modified to what is described below. In addition to this I wanted one additional domain for a specific purpose, hmmm, hrmmm, make that two extra domains. My current setup looks like this:

  • mostrom.eu - the main site. It contains/will contain info about myself, some tutorials and those kind of stuff.
  • blog.mostrom.eu - this is my blog, just a standard regular blog.
  • micro.mostrom.eu - my micro blog, I like the whole idea of micro blogs (and the idea behind Twitter - but not necessarily Twitter itself).
  • library.mostrom.eu - this is kind of interesting, it contain single page documents that I have written for some specific purpose, perhaps as an answer to a question at work or a description of something, etc. These documents have no relation to each other and thus there is no navigation available, you need the correct url to actually see the pages.
  • snapz.mostrom.eu - my own instagram (minus the followers 😜)
  • minnen.mostrom.eu - the photos I've taken and actually think are OK.
  • foto.mostrom.eu - my big photo dump, good and (mostly) bad photos.

The additional domain is a site that contains "event photographs", mfoto.se, with photos from various competitions, sports events, music events, etc. These photos are mostly documentation of what happened and of interest to the people who attended the event. When I go to an event I usually have my camera with me - simply because I like to take photos - which usually results in people asking me where they can find the photos afterwards and it's nice to have a nice short domain to point them to.

The final domain is a family domain, locked down for everybody except my family.

The be completely honest, there is one more mostrom.eu sub-domain that have a even more specific purpose: at work we have a very crappy CMS system that makes it difficult to handle illustrations and photos, so instead of using it - and getting a high blood pressure - I've set up a site using piwigo so that I can easily insert illustrations everywhere I want.

The finer details

"Wow, so many domains/sub-domains!!!"

Well, yes. I've tried so many different things over the years and this is what I settled down on. The most important reason for having these domains is that it doesn't cost me anything extra to have several sub-domains and it also let me experiment on different parts without having to try to keep the other parts safe/in order at the same time.

So let us take a closer look at those domains and my long term plan for them. Mostrom.eu is where I send people if they ask for my web site, it contains information about me, personal stuff, work stuff and some tutorials. I hope to add more stuff here but I'm not in any hurry. I've used Hugo for this site.

Blog.mostrom.eu is currently hosted at WordPress.com. For the last 20-30 years I've been self-hosting my site, both on my own servers (too much work) and on shared hosting (too slow), but I decided that I rather pay someone to keep my WordPress installation up-to-date and secure than doing it myself. Long term goal is to move this to a static site generator but I'm in no hurry doing that either, right now I'm more interested in generating content.

Micro.mostrom.eu was the missing piece of the puzzle for me. As I mentioned earlier I've become more and more annoyed with Facebook - and Twitter - over the years but I really like the ability of an online community. So when I first heard about Mantons Kickstarter project I became very interested. And so far micro.blog has met my expectations. And I love that if micro.blog for some disappears I have all my entries in markdown formatted text files that I easily can convert to some other CMS. Long term plan? Hoping that micro.blog is here to stay.

In fact, snapz.mostrom.eu is also a micro.blog site. It's more of an experiment but I'm curios to see if I can create something Instagram-like here but without actually using Instagram. The big drawback is that none of the people following me on Instagram will ever look at the site, so I'll miss the conversation with friends etc. Long term plan: none. We'll see how it goes.

Library.mostrom.eu is kind of odd, it contains of single pages with no relation to each other and no navigation between them. The reason for this domain is that once in a while I need to write something that doesn't really fit anywhere else but I still want to send people to a web site to see/read/download things. Well, this is it. So far I've been using Ulysses for creating the pages but it should work just fine with several of the apps I have. Long term plan: just keep it as is and add stuff when I need to.

Minnen.mostrom.eu contains the photos I like and that I want to show off (yep, an ego site). I'm currently adding photos here in a very slow pace, once again I'm in no hurry. The site is hosted at smugmug.com. Long term plan: for time being I'll keep this at smugmug.

Foto.mostrom.eu is the big dumping ground for my photos, good and bad. This is mostly for people that are looking for some older photos from an event and similar stuff. The plan is to keep adding photos here (right now only the last couple of years is uploaded), even those who exist at one of the other sites. But it's not a site that I expect people to actually use until they ask me for something and I point them here. The site is created using jAlbum which is a really nice piece of software for a site like this.

Finally, mfoto.se. As I wrote above, it's nice to have a short domain to point people to. This is also a SmugMug site and the long term plan is simply to take more photos and add them here, so people can find them. Here is what can happen when I publish something (nr of photos viewed):

That's a jump from 50-100 to 25000+ photos viewed/day when people discovers some new album.

My thoughts on the publishing tools

Over the years I've been playing with many different tools for creating web sites. I started with manually coded HTML pages and then continued using various tools, for example: BBEdits web site tools, DreamWeaver, Drupal, WordPress, RapidWeaver, tools that I’ve created myself, and probably several more I’ve forgotten about. But most of the time I’ve been using WordPress.

So … my opinions of WordPress? Well, I think it's fairly slow, bloated and not really what I want. It's also difficult to move to different hosts - I've always had problems moving sites with a lot of photos (not even moving to wordpress.com worked flawlessly). But it's easy to set up and there are a lot of different tools/themes that can be used to quickly set up a nice looking site. But the longterm goal is to move away from WordPress and instead use some static site generator.

For some reason I like the idea of writing/storing a site as plain text files, preferable using markdown, and then generate a site using some tool(s). And yes, I’ve written a couple very primitive tools but decided that I haven’t got the time to maintain & enhance those tools - as I’ve mentioned a couple of times now: I prefer spending my time on content generation. So I’ve played with several static generators trying to find the best one for me, and the winner is - for the moment - Hugo. The runner up was Pelican. I don’t know what I will use in a few years, but once I have my site as text files it’s quite easy to write a few Python scripts to move the site between different systems.

Why am I using WordPress if I don’t like it. The problem with Hugo and many other static generators are that they are so cumbersome to update, you need to write the content, put it into the correct directory, run a program/script, and finally upload to the site (yes, I know you can automate this). This is something that is really cumbersome when using a phone/iPad and this is the most important reason for me to use WordPress for the time being.

So, that leaves the photos and yes, I’ve tried many different systems for this also. One of them being WordPress, which is awful for managing a large number of photos. Things become easier using a plugin like NextGen Gallery but it’s still not fun/easy. So after having tested everything I could test I ended up with two very different systems:

  • SmugMug - it's the best photo hosting service I've tried. The site looks beautiful, it’s fairly easy to use and very customizable. Add a very good customer service department and I’m satisfied. Will I move to something else in the future ... well, I will not say that I will stay at SmugMug forever but right now I can’t see myself moving away from them. But just in case I have a complete backup of the content for the sites on local disks at home, so moving to something else would be a question of simply uploading the photos to a new site.
  • jAlbum - look at it as an static site generator but for photos. It produces nice looking sites and works well, however the app is not pretty.Similarly to the SmugMug sites I have a complete backup of the source photos making it trivial to use some other system.

I’m pretty satisfied with these two alternatives and can’t see myself moving away from them in the foreseeable future … but I can easily do so if it becomes necessary. For the curious, the original RAW files are managed in Lightroom and also backed up to a number of disks.

Summary

As you can see I’m using many different tools/systems for different purposes but if you take a second look you see a few basic ideas:

  • Do not spend too much time trying to come up with a complete final solution for everything, there is no final solution. It’s better to divide things up so it’s possible to improve different parts when there is time/interest of doing so.
  • Keep all material in the same format, for me the text is stored as markdown files (under version control) and jpegs (folder hierarchy replicated to several different disks as backup), and make sure you can use the material in many different programs.
  • Don’t be afraid of paying for services - if you can afford it, that is. If a service makes things easier/better for you, it might be worth it - just make sure you have a backup of the raw data.
  • Spend time on doing what you think is fun, if that is tinkering with the sites/systems ... do it. If writing/storytelling is what you enjoy do that instead, etc.

Well, tomorrow I’ll probably spend my time trying out some flash photography and if successful I’ll add the result to one of the sites.

Jan Erik Moström @jemostrom