Development Indie iOS Life Mac Weblogging Windows

Focus, Rob

It’s Christmas morning, early. The house is quiet but my brain is going crazy with thoughts of projects I should work on. The thing is, I don’t need any additional projects to work on.

AHHHHHH! When I decided to build Stream it was because I wanted to do something small. I had originally started building a blog editor that would post to WordPress and Tumblr. The core of the app was being written in C++ so I could share that core between iOS, macOS, and Windows apps. It was going to be a lot of work. More work than I had the time to invest.

So, I did my little app: Stream. That took over two years to complete. I spent a lot of time on the guts of the app. Mainly around discovery of feeds and parsing those feeds. As a result I have a decent set of code for dealing with RSS, Atom, JSON Feed, OPML, and HTML. It was a real joy to finally ship.

The bottom line is this, I’m slow. Couple that with limited time to work on stuff and it takes forever to complete a project.

This morning my brain is spinning on the idea of that blogging app. As much as I’d like to do it, I really do love blogging, it’s not the project I really need to pour my efforts into.

The project I need to work on is going to be a many year effort. It’s something I’ve wanted to do for at least 15-years. The target OS has changed and morphed over those years but the app idea hasn’t, and I’m getting help from a longtime friend who just happens to be a really great developer.

Focus, Rob. Focus.


New Blogging System Update #1

I’d mentioned a few weeks ago that I was moving to Hugo. The motivation for me was simple. I’d not made my self-hosted WordPress blog secure enough so a not very nice person got into it and did mean things. I was not pleased.

Some of you may be asking yourself, why not fix it and keep using WordPress. Good question. Basically I’ve done that twice now. This time around required deleting my installation and reinstalling. It worked out quite well and I decided not to install a number of plug-ins I’d been using before, including Jetpack. My weblog is actually quite a bit faster now as a result.

ExpressoSo, back to the move. I’m moving to Hugo but I’m still trying to figure out some mysteries of Hugo — at least they’re mysteries to me. I’d like a ‘dirty’ directory structure and I want to make double-sure when I create a post the archive of the post shows up in its proper location, like this:

That is super important to me. All of my current WordPress posts, like this one, have that structure. My plan is to import all of my WordPress posts into my new Hugo site, so it needs to be backward compatible.

Anywho. Here’s how I plan to configure my weblog.

  • Use GitHub for storage – Posts will be edited locally as Markdown and pushed to GitHub.
  • Use GitHub for publishing – Once a post is pushed to GitHub it will cause a GitHub server trigger to run. That will pull the source on my host.
  • Run Hugo on the host – Hugo will live on my host and will be run when the GitHub server trigger executes.

Using those steps should allow me to easily update anywhere I can pull code from my GitHub account — even on iOS — and push changes. For now I plan on using BBEdit on my Mac for writing but in the future I hope to use my own Blogging Tool.

If anyone notices a flaw in that logic please get in touch. My email address is

Life Weblogging

Help with Hugo

A wonderful boquet of flowers.A couple weeks back my WordPress weblog started doing funny things. Apparently someone was able to gain access to it via my Jetpack login and install a bitcoin mining service. Joy.

When you’d visit my site you’d occasionally get booted to another site, typically one that wasn’t nice, but on occasion it was what appeared to be a nice weblog. I’m not sure who’s it was but it wasn’t wanted.

So I disabled the site and put up a temporary placeholder page while I figured out what to do about it. This is the second time I’ve had to make changes because my WordPress site was broken into. It makes having a blog a lot less fun when idiots break you stuff.

I decided I’d install Hugo and figure out how to use it to automagically post on my server. I found a nice page documenting how to use git with git triggers to publish a Hugo based weblog and went about trying it out. It works fine, but there is something I can’t figure out.

When publishing I would like to have my front page contain some number of blog posts with permalinks to those posts. E.G. Clicking on the title would take you to a URL like

. Notice the yyyy/mm/dd format in the URL. I want that exact thing for my Hugo pages so I can import what I already have and not mess up links to my existing posts. Hugo looks like it can do this, but there’s one thing that bugs me and I haven’t been able to figure it out.

When you click on the permalink it displays a URL like the one above but the file doesn’t actually exist at that location. It must use some JavaScript to do the work, I guess? I have no clue because I don’t grok how web pages and JavaScript really operate.

Can someone please let me know if Hugo can generate a standalone HTML file and drop it into a directory with yyyy/mm/dd format so I can maintain what I already have? If I can do that I’m all in with Hugo. Otherwise it’s off to find a fully baked blogging system that can do what I want.


Up and running

I got my site back up and running last night. I’m still on WordPress because I still have questions about how Hugo works and until I get those answered I’m keeping the site the way it is.

To get back online I deleted my WordPress installation and started fresh. I was able to plug in the database information during installation and use my existing stuff. No fuss, no muss.

There is one strange thing going on. Some of my posts have had the apostrophe replaced with what looks to be encoded representations. It’s weird and I’ve fixed up a few.

This time around I didn’t install a bunch of plugins and the site is super quick. No Jetpack, no caching, nothing. Just a couple small plugins that come with the installation. That’s it.

I’m also using a WordPress default template for now because it works.

I still hope to move to Hugo but I need to get some questions answered first. More later.


Blog for Love

Dave Winer: “Now I’d like to take you back to a discsussion that was had many years ago that resulted in this conclusion. You don’t make money from this work, but it leads to opportunities where you can make money. Ideas and information make their way to you and if you are so-inclined you can make money by investing in those ideas. No sure things, but some bloggers have made billions, and others have made millions. And others have made a decent living. Not from their blog but because they blog.”

I’ve talked about blogging to people a lot over the past 16 plus years. Some folks don’t understand what it is after you’re done explaining it, others feel they don’t have anything to say, and still others say they don’t know how to make money at it.

Rocking Chair

I always have to stop people that make that last statement. Blogging doesn’t have to be about money. I’ve been doing this since February 2001 and haven’t made any money directly from writing. I’ve described my blog as my front porch on the internet.

I think the most important point to make is this: Own your content. What you write is yours and yours alone. Giving your words to Facebook only helps them. Make sure you own your work.

See also, Why We Blog. I’d also recommend following Dave Rogers if you don’t. I think he’s a great writer.

Design Indie Weblogging

Six Colors Redesign

Six Colors 6C logoSix Colors: “Anyway, the goal of the design—other than, perhaps, to better reflect the site’s name—was to differentiate between the different kinds of posts we have on this site. There are regular posts, sure, but we found ourselves also posting off-site links, links to work we’ve written on other sites, links to podcasts, and posts from sponsors. Now those are all more clearly defined, and I think the site’s better for it.”

Absolutely beautiful. I love the treatment given to different post types.

Business Weblogging

The Genius of Daring Fireball

Daring Fireball: “But I see the fact that Daring Fireball’s revenue streams should remain unaffected by Safari content-blocking as affirmation that my choices over the last decade have been correct: that I should put my readers’ interests first, and only publish the sort of ads and sponsorships that I myself would want to be served, even if that means leaving (significant) amounts of money on the table along the way.”

Great content isn’t the only experience Mr. Gruber provides. He created a super brilliant, non-invasive, ad model to support his company. He has ads via The Deck and takes one week RSS feed sponsorships. The sponsor provides promotional content at the beginning of the week, which appears in a blog post, and he thanks the sponsor at the end of the week with a blog post. Nifty.

It took Mr. Gruber a while to figure this stuff out. It didn’t happen over night. Others have adopted this model; Six Colors and The Loop come to mind. It’s not for everyone, but if you’re a small indie publisher it can work quite well, if you have great content. That’s the key. Great content attracts people.

How well? Pretty darned well if you ask me. As of this writing Mr. Gruber’s Daring Fireball fetches $9,750.00 for a one week sponsorship (I believe it’s a progressive scale throughout the year.) That’s some serious cheddar.


Life Weblogging

20 years of

Jeffrey Zeldman: “I launched this site twenty years ago (a year before the Wayback Machine, at least two years before Google) and it was one of the only places you could read and learn about web design. I launched at a tilde address (kids, ask your parents), and did not think to register until 1996, because nobody had ever done anything that crazy. “

Happy Birthday! Jeffrey, thanks for 20 years of web design standards. Yours was one of the first websites I discovered, before I knew it was a weblog. I discovered you, Dave Winer, and Evan Williams around the year 2000 and started my own weblog in 2001 as a result.

One thing I’ve always loved about your site is the use of orange! I know you had that greenish period, but I’m glad you came back to orange. I also appreciate the size of the type. Aging eyes and all.

Here’s to 20 more years of Long live the independent weblog!

Cloud Weblogging

The Loop: The future of WordPress

The Loop: “Do something like Medium or Svbtle that doesn’t have the complicated backend and code. That’s what I want.”

Hello, Dr. Jones.I probably harp on this too much. I’ve been browsing around for a simplified weblogging tool, but WordPress is just too darned good to give up. I would, however, love to see a version of WordPress that would allow me to publish everything as static HTML. Decouple the composition from publishing, make them separate services. I compose a post, save it, when I click “Publish” the site is regenerated and pushed to my domain. That’s it. I would also be nice to have a quick and dirty post editor that doesn’t include all of the administrative functionality, think QuickPress in a standalone web app, or maybe a desktop app (that would be really nice.)

Make sure you read the linked article, The future of WordPress: “By incorporating a RESTful application programming interface (API), current WordPress apps could be supported, as well as mobile apps that use WordPress as a backend.”

This is how all sites, web app type sites, should be constructed. It’s all about services. Create a service, use the same service from the web app and mobile and anything else connected to the internet. Yes, yes, yes!


A Case for Really Simple RSS Readers

I’m old. When RSS was hitting the streets we subscribed from desktop clients and didn’t have multiple computers to keep in sync (I don’t care if my read/unread count is in sync, but that’s another matter.)

It’s nice to see RSS readers popping up, Google Reader disappearing was good for the ecosystem, it revived a stagnant market.

One thing that’s missing from all the clients I’ve tried is a very simple mechanism to sync my OPML subscription file to my Dropbox account. I don’t use a centralized service to fetch the distributed network of RSS feeds I follow. Since I don’t care about read/unread counts it makes sense for me to sync locally. The only thing I’d like to keep in sync are my subscriptions, my OPML file.

I currently use Reeder across Mac, iPad, and iPhone, but as far as I’m aware it doesn’t support saving my subscriptions to a cloud based solution. If all RSS readers supported existing storage services, Dropbox seems the most logical choice, then we could keep our subscriptions in sync without the need of another service.