Matthew Lang avatar

Dailymuse

Updates and thoughts on building Dailymuse, my micro-product.

I finished migrating one account over from Sourcehut to GitLab. Most of the work was for Dailymuse to ensure it kept the CI steps I had on Sourcehut and that the deployment process worked. I moved all the issues over as well, but there weren’t too many. I can get on with shipping some features now!

Rather than using Sourcehut’s builds to deploy my changes to Dailymuse, I’ve replaced it with a bash script that I run locally. It triggers the release to Hatchbox and monitors it from my terminal. I’ve written bash scripts before, but nothing like this. Really happy with the way it turned out.

I can’t remember the last time I had a Rails codebase that was completely my own, and at the point where I could start implementing patterns and refactorings that actually improve an aspect of the application. Too many of my applications get forgotten about or thrown away. Not this one!

I am trying to determine other ways to measure in-app activity besides tracking email open rates for Dailymuse. Difficult to do for an email product, but I’d rather not go down the tracking-pixel road.

A couple of web development projects for the winter

Now that the golf season is down to me and the boys only getting out at the weekend, I can start spending more time on a few side projects. There are so many things I would like to learn, but I figure just limiting myself to a couple won’t take up too much of my time.

So, from now to March, I’ll spend a few hours each week on the following.

  • Learning more about Rails 8 and Kamal — Dailymuse and Writeabout will each get a bump to Rails 8. Only Writeabout, though, will get the Kamal) treatment to begin with. When I have gained enough knowledge about Kamal, I’ll also look to deploy Dailymuse with Kamal.
  • Learn TypeScript and ThreeJS — A work colleague showed me a hobby project he is working on using ThreeJS. It’s the perfect excuse to learn TypeScript and build something for the web that isn’t just another web application.

Update: Writeabout was retired in Autumn 2026.

I have a couple of errands to run this morning, including holiday haircuts for myself and the boys. After that, it’s back home for some brunch. I’m also going to crack open the Dailymuse app to continue working on a new feature for it. Yeah, even on holiday, I’m still writing code.

I am almost ready to migrate Dailymuse from Heroku to Hatchbox. Once migrated, Dailymuse will start receiving some much-needed updates on both the front and back end. The core feature will remain the same, but I will add a few additional features.

I need to ship Rails app updates more often

On Sunday night, I migrated a couple of Rails apps to Ruby 2.7, including Writeabout. Last night, I did the same with another Rails app. By the end of the week, I hope to have Markcase moved over to Ruby 2.7 and Dailymuse upgraded to Ruby 2.7 and Rails 6.0.

Upgrading apps is a pain if they’re left alone for too long. I’ve left Dailymuse alone for such a long time that it’s still sitting on Rails 5. Markcase is on Rails 6 but requires a wee bit of maintenance regarding Webpack.

I’ve learned that leaving apps for such a long time between updates is not the best thing to do. Even upgrading an app regularly through its patch versions is better than just leaving them sitting gathering dust.

Hello PenMuse

I’m always on the lookout for something different to write about, but some days the nudge just isn’t there. I started using my daily themes as writing topics but this can be somewhat repetitive, and it still falls on me to narrow down the theme to a topic that I can write about.

I started looking for writing prompts that fell into the category of my daily themes, but this was another challenge in itself. Frequently it involved digging through the thousands of writing prompts available online across different websites. What the problem with these is that they not usually organised in a way that makes them easy to search through.

I needed a daily random writing prompt but one that was geared towards my daily themes for the day. So I started making one. Here’s how it looks so far.

Screenshot of the PenMuse website

The idea is simple. It displays a random writing prompt. If you don’t like it, you can generate another one. As a nice tie-in with DailyMuse and my preference towards analogue writing tools, I’ve called it PenMuse.

Product playground

PenMuse serves a dual-purpose for me. While it does take the guesswork out of what you are going to write about, it also helps a much more significant purpose. It’s a product playground.

The idea of this that you have a small service or product that you can use to flex your development skills. While this application doesn’t have the complexity of a more significant Rails application, it does allow me to try things out on a smaller scale and it’s proved to be helpful already. I’m going to re-design the DailyMuse website with a similar theme.

Plans for the future

There are a few things still missing that I hope to add shortly.

  • Allow people to suggest a writing prompt and give them accreditation when it is displayed.
  • Document the API for other developers to use.
  • Allow people to link to individual writing prompts.
  • Create a weekly PenMuse email that emails you the week’s writing prompts ahead of schedule.

One thing that I could do with help on though is writing prompts. There are thousands of writing prompts online, but I don’t want to copy these into PenMuse without thought. I want to curate these prompts so that they are easy to find and share.

What do you like to write about? What prompts would you like to see on PenMuse?

Contact me with your suggestions.

The death of web analytics?

It’s been a long time since I stopped using Google Analytics to track the activity on my websites. In its place, I went with a product called Gauges.

On its own Gauges is fine but there hasn’t been any new major features for a while now. Sure I pay money for the serivce to continue but it would be nice to see something new in the way of features. It’s got me questioning though whether Gauges or even web analytics is still necessary.

Do I need web analytics?

I honestly think the answer to this question is no. Well, let me expand on that answer. I don’t need web analytics. I can’t speak for others, but let me explain using each of my different websites as examples.

Personal blog

For my personal blog, web analytics is nothing more than a vanity feature. I don’t need to see what people are reading on my blog, I don’t need to tailor content based on what people like or searching for.

My blog is an outlet for my writing, the topics that I am interested in writing about.

Whether people read it or not is not my main concern.

I write because I want to write. I don’t need web analytics here.

DigitalBothy blog

For my freelancing blog things get a bit trickier.

Sure it would be nice to see what people are reading and what is proving to be most popular but my freelancing blog isn’t just about giving people something to read. It’s about advertising my knowledge of web development.

My blog is also the first step in acquiring potential clients. If a potential client likes what I am writing about and they have a need for a web developer like myself, then what next?

At the moment they can contact me through a form but there needs to be more than just a contact form. I need to be able to contact them back on a regular basis and let them know what’s changing in the world of web development. This is where an email list comes in to play.

Despite listening to podcasts and reading many newsletters telling me for years that I need an emailing list for my business, I don’t have an emailing list for my business. Crazy I know.

With an email list though I can start to build a way of contacting potential clients and convert them to paying clients through a funnel of more specialised content that is only available through that email list.

Instead of using web analytics and learning nothing about my potential clients, I can use an email list to contact them directly and see what interests them in terms of clicked content within each email campaign.

My freelancing blog is the first step in acquiring a client. While it might be helpful to see which content is proving popular at this step, I don’t think that it warrants having web analytics. I’d rather see metrics of what people are clicking through to in the email campaigns that I send out.

DailyMuse

For DailyMuse, web analytics is not something that I want to measure.

Sure it’s nice that people visit DailyMuse and perhaps even sign up for an account, but the key metric here is whether people use DailyMuse on a daily basis and that means measuring when people login, how many people are signing up for the paid plan and how many people are receiving emails per day or week.

I’ve already got a minimal dashboard for this cobbled together from user data in DailyMuse, so again, web analytics isn’t necessary here.

There are also other plugins and solutions that offer user analytics for products like DailyMuse. This is more interesting because I get to see what user’s are doing in my product. I’m not at that level yet and so what I have at the moment will suffice for the time being.

Do I need web analytics then?

So perhaps I don’t need web analytics then.

Others might make the case that regardless of the type of website I am running, web analytics is better to have than not at all, but I think I can live without it.

I’ve justified in each case why I don’t need web analytics and what I would use instead. I think in each case it’s fair to say that I have alternatives in place that work for me and my own needs.

Web analytics isn’t dead then, but I think it has been superseded by other analytic products that offer customers more. It’s probably good to have in place if the content of your website is the only way of measuring activity on your website, but even then I would recommend that such a website have an email list as well.

I’ve used web analytics for a number of years but I think I’ve used it for so long that I’ve become complacent with it. It’s not the type of activity I need to be looking at. I need to be looking at different forms of activity for different sites and that perhaps is the most important lesson in all this.

There’s also the fact that Twitter already offers a sizeable amount of analytics that makes social media interaction much easier to see. If you share your website’s content on Twitter, then it’s worth looking at your account’s analytics dashboard on to see the traffic through your account’s recent tweets.

For me though, I’m going to stop using web analytics over the course of this week and instead focus on getting my analytics from elsewhere.

Client work lined up for today and some product work on DailyMuse. It’s been neglected in the last few weeks but I’m hoping to give it more time over the next few months.

The DailyMuse Facelift

Development of my DailyMuse service has been lagging in the last year. Sure I’ve shipped a few features for users, but other than that I’ve just not had the urge to develop it further.

It’s still a valuable service to me and is to others as well. People are paying good money for it so why not improve it in any way I can?

In the last three months, I’ve been silently shipping little improvements and updates to DailyMuse in preparation for a big application update. Last night I shipped the latest update for DailyMuse which includes migration to Rails 5 and the use of Bootstrap 4 for the front end.

These two big updates have been on the DailyMuse backlog for a long time. In the last few weeks I’ve been chipping away at both of them to get them production ready.

A More Welcome Landing Page

The final result is a much more professional and welcome landing page.

Gone is the stark landing page, replaced with an interesting background and a better description of the DailyMuse service.

There’s still room for improvement here though. I still think it’s looks basic and could do with an illustration or graphic to accompany the description of the service. Also the form sits on the right hand side of the page as more of an afterthought. Would it flow better if the form naturally followed the product description?

Lots of to think of here and it will change over the next few weeks.

Application Foundations

Within DailyMuse itself there’s be a big update to the look and feel of the service.

Instead of the two column layout I had before, it’s now three columns with greater scope for adding contextual information in the far right column. It was always a problem trying to fit everything into two columns, but after looking at a number of other web applications, three columns proved to provide more space when needed.

Bootstrap 4 now includes the card component which I thought was a great way to highlight cards in DailyMuse. Not only does it offer a great way to encompass the card, but it also allows me to add extra information to each particular card.

There’s still a number of changes to make to the front end though.

  • Gradually migrate away from the obvious Bootstrap 4 look with my own look for DailyMuse.
  • Make better use of the three columns with widgets for today’s card, upcoming cards, and cards sent on this day in the past.

Let’s Not Forget Features!

There’s also a number of features due to be shipped in the next few months.

  • Card delivery by RSS. Email isn’t everyone’s cup of tea. RSS was the next obvious choice to receiving DailyMuse card.
  • Promote cards in the queue so that you can decide what to send in the foreseeable future.
  • Better randomising of cards to reduce the possibility of a card being repeatedly sent over a few days.
  • Collections being an idea where you can add cards to a collection of cards. These can be added to your DailyMuse email so that receive multiple cards at a time.

I’m not worried if DailyMuse doesn’t make it as a service that has millions of users, but it would be nice to make it to the thousand user goal. It’s a great service for me to exercise my Ruby knowledge and also hone a few other skills and certainly helps with it’s daily email. I’m certainly looking to expand it into a better service over the next few months.

Perpetual devotion to what a man calls his business, is only to be sustained by perpetual neglect of many other things.

— Robert Louis Stevenson

Love this quote that Shawn Blanc highlighted as part of his Focus Course and he follows it up nicely with his own take on it:

May devotion to our business not be sustained by neglect of our health, relationships, values, and even our own happiness.

— Family Balance by Shawn Blanc

Both worthy additions to DailyMuse.

Some Ideas for DailyMuse

It’s been a while since I updated my daily email service, DailyMuse. It’s a year old now and I’m finding it to be a great start to the day. If you’re unfamiliar with it, then here’s the gist.

DailyMuse emails you single snippet of text from your own collection of snippets. Think of it as your nudge for the day. In the past year I’ve collected a number of quotes, lists and nudges that I keep here. Every day I get an email from DailyMuse with one of these snippets.

For the last year thought the service hasn’t unchanged. It’s not through lack of work on my part. I’ve built three different features and trashed them on the basis that they’re not suitable or too complicated for DailyMuse. The last thing I want to do is complicate DailyMuse but I do want it to be a more powerful nudge in the morning, and not just for me.

Here’s a few ideas I’ve been pondering on for DailyMuse.

The Daily Mantra

I recently read Paul Graham’s Top of Your Todo List post in which he talks about 5 commands that sit at the top of his todo list. It’s a nice idea but I don’t have space at the top of my todo list, but getting something like this in all my DailyMuse emails would be a nice idea.

Rather than having the commands at the top though, I thought about including it in the footer of the email. That way once you’ve read through your nudge for the day, the last thing you’ll read will be your commands.

Call it commands, a daily mantra, a motto. It could be anything, but lots of people live by this in some form and a daily reminder of it couldn’t hurt.

Categories

One of the trashed ideas for DailyMuse was adding the ability to organise snippets using tags. The daily email from DailyMuse could then send a snippet from a specific tag on different days. After testing the idea though I realised that tags allowed for a huge number of ways of organising your snippets. It was overkill.

Tags was too granular for organising snippets. I needed something broader, something simpler. Rather than organising snippets into tags, how about organising them into categories? One category per snippet is much simpler and with a limited set of categories to play with it means that people have a simpler way of organising their snippets.

Cards, Not Snippets

There’s one thing that has irked me since I built DailyMuse and that’s the use of the word snippets. I don’t like the word snippets, but it seemed like the best way to describe the information you collect for your DailyMuse emails. Maybe it’s my developer background that swayed towards this, but it isn’t the right word to describe what these snippets are. I had to get away from the programmer influence for this.

If DailyMuse was a paper-based service that didn’t rely on computers then how would it work in the real world? Well, every day you receive your snippet in the post, but it wouldn’t be on a letter because that’s for long form writing. DailyMuse is all about getting a short burst of information every day. It would need to be on something smaller. A card. An index card.

What wasn’t obvious in the past when I built DailyMuse now is. Rather than using the term snippets, I should have used cards.

This is one change to DailyMuse that is happening. A change in the terminology should simplify what DailyMuse is and encourage more people to sign up for it.

Find the Right Features

DailyMuse is still a side-project. While it does have a number of paying customers, it’s just enough to cover the hosting costs for most of the year. I’m taking my time with it and allowing it to a grow at a steady pace.

Not everything I build for DailyMuse get shipped. I’ve trashed more features for DailyMuse than I’ve added. I’m trying to keep it simple and easy to use. Burdening it with features isn’t going to make it anymore useful but it does have some space for improvement. I just need to find the right features that fit that space.

I’m a freelance Web Developer from the UK.

I build high quality web application solutions using Ruby on Rails and Sinatra.

In my time I’ve built web applications with the following tools and libraries: Cucumber, Rspec, Minitest, jQuery, Postgres, MySQL, RabbitMQ, Heroku, Cloud66, Engine Yard and AWS.

When I’m not working I’m spending time with my family, cycling, golfing and the odd spot of gaming (yes, I’ve still got the skills).

If you’re interested in working with me, you can send your details to me and I’ll get back in touch as soon as possible.

Some of My Work

DailyMuse

DailyMuse is a daily email that you curate using your own quotes, lists, links and anything else you find interesting. One of these items is sent to you at random everyday. DailyMuse is built with Ruby on Rails and uses Stripe for payment processing.

Journalong

Journalong (retired) was a free service that takes your journal entries and saves them to your Dropbox. Journal entries are written in plain text with a preference for Markdown. It was initially built using Ruby on Rails. Since retiring this product I’ve put together a smaller Sinatra version that is designed to be run from your own computer.

Searching for a Worthy Successor to Backpack

Do you remember Backpack? If you don’t, it was a knowledge base web application where you could store notes, images, drafts, attachments and other gubbins. Since 37signals changed their name and focus to Basecamp, Backpack has been left to quietly sit on the sidelines. There was a time that I loved using Backpack but after a while I tried a few others. Overtime though nothing compared to the functionality that Backpack offered.

Frustrated, I’ve been looking for alternatives to Backpack. Here’s a few I’ve tried in the last few days.

Trello

I use Trello mainly for managing clients projects but I do have a couple of other boards here that I use. I tried to create a board that would serve my needs as a knowledge base board but there’s two dislikes I have about Trello. Sharing individual cards isn’t possible unless you share the board the card belongs to and viewing a card on it’s own has too much clutter.

FAQT

I signed up to FAQT when I first seen it on Hacker News a few weeks ago and initial impressions are good. Markdown based ‘cards’ that can be categorised and shared. Fulfills most of my needs as a knowledge base and there is a few features I would like to see but my biggest bugbear is that FAQT is currently free and therefore there’s a chance the service won’t be around forever.

DailyMuse

Lastly there’s my own DailyMuse application. It’s comprises of a collection of snippets with a single snippet being sent to you daily. It’s nice for things like quotes and lists that I like to review periodically but as a knowledge base application it lacks a few features that FAQT has. For a while though DailyMuse has been trundling along as a micro-service with a very focused aim, but maybe it’s time to turn that on it’s head and make it into some more that appeals to more people. It would offer the same functionality that it offers today but would also include the ability to create and share information in the form of pages. It’s an idea I’ve been thinking about but reluctant to act on.

There’s probably more in terms of knowledge base applications out there that do the same thing, but to be honest I would rather be using an existing service for this rather than using another service and having more of my data spread out on the Internet.

Finding that a lot of the code I’m writing for DailyMuse is to support the product rather than being code for new features.

Supporting Features in DailyMuse

In the time it’s taken me to get DailyMuse up and running, I’ve noticed that a lot of the code that I have written for this product is code that supports the product. The amount of features that I’ve added or expect to add is rather minimal. Yes, there’s new features arriving soon for DailyMuse like scheduling snippets on particular days and tagging snippets, but in the past few weeks I’ve been writing code to support the product.

This idea of supporting the product with code could be thought of as a feature, but I see features as something that directly benefits the user. As an owner of the product I also need my own features. It’s these supporting features that I see as being code that supports the product.

Commmunication with users of DailyMuse is important. They could be getting their daily email every day or almost every day of the week depending on their needs. Bombarding them with additional emails on top of this to notify them of features or changes in DailyMuse isn’t in their best interests.

I wanted to notify users of changes to DailyMuse, so I added the ability to add one or two lines of text after their snippet that they receive on a particular day. I’ve used this short messaging idea only a couple of times so far, but it’s value to me by being able to bring something to the users attention is without bombarding them with more emails is important.

I’ve got a number of other supporting features planned for DailyMuse in the future. They’ll help me to administer DailyMuse, communicate with users and help maintain DailyMuse as a product and service. New features are nice, but having a stable product that improves gradually for its users is better.

DailyMuse: The Today View

Email is great. It’s a reliable form of content delivery that can reach a multitude of devices and it’s platform independent. Who cares if it’s Windows, Linux, OS X, iOS or Android you’re running? Email is the cornerstone of any platform, which is why it’s the preferred delivery method for DailyMuse.

As great as email is though, I also like having alternatives to email, something as flexible as email but also accessible. I would open my DailyMuse email a couple of times a day, but quickly it became lost amongst other emails. I needed a way of seeing my DailyMuse message for the day without opening my email.

For a few weeks now there’s been a Today view in the DailyMuse application. If logged in and you visited it you would see the last snippet that DailyMuse sent you. Fine and good, but it was rendered within the context of the application and I quickly realised that it became lost amongst the rest of the elements of the application. I needed a view of my snippet that was free of the context of the rest of the application.

This morning I added a link in the DailyMuse sidebar that will address this issue. At the top of the sidebar is a Today link that will render a colourful view of your snippet for the day that is free from the rest of the application so that you can have your snippet front and center on your web browser.

Here’s my snippet for today:

A screenshot of the today view from DailyMuse

Rather than sticking with default font sizes for all snippets, I’ve also tweaked the font size for snippets that vary in length. If your snippet is small in length the font size for it will increase so that it becomes easier to read.

This has been a planned feature for a while, but viewing the snippet within DailyMuse has never felt right. With this in place now, I’m happy with being able to view my snippet for the day in both email and in my browser.

Interesting in using DailyMuse? It’s free for 30 days after which it becomes a budget friendly $2 per month to use.

Uses for DailyMuse

Great to see DailyMuse making a positive change.

Those are the two things I’m using it for so far but I can think of many others — daily exercise ideas, healthy snacks and recipes, writing prompts, study of scripture or philosophy, etc. Basically, anything that would be good to have a daily reminder for would be a good fit for this.

— How I Use DailyMuse by Patrick Rhone

Interested in trying it out?

Say Hi to DailyMuse

It’s been quiet of late on my blog and for a good reason. While my daily posts have ground to an almost complete stop, I do have a good reason for it.

Today I’m officially (and nervously) announcing a micro-service of mine, DailyMuse. So what is DailyMuse? Well, let me first take you back to a post that Patrick Rhone made on App.net.

Maybe something like this exists but, if not, someone should build it: I want to type a bunch of things into a place and then have that place pick a thing at random and email it to me once a day.

I made a note of this post with the intention of building something, but I never got round to it. Patrick’s tweet in October was finally the nudge that I needed.

“Making cool stuff for our friends that they would like” sounds like a solid, successful, business plan to me.

— on App.net by Patrick Rhone

Now while I don’t know Patrick personally, having not met him in person, he is someone who is a great influencer on how I work. His books are great source of reflection and I’ve long been a fan and user of his Dash/Plus system. So having established that I’m not friends with Patrick in the traditional sense, I still wanted to make this “thing” for him.

Having toyed with a few ideas before the end of last year, I started putting something more concrete together that Patrick could use. After a couple of weeks I had the basics of the service working. After a brief introduction by email, Patrick became the first user of DailyMuse.

That’s the story behind the idea, but what is it? I think it can be best summed up as this:

DailyMuse is your own personal email subscription. You’re the curator and audience.

Using DailyMuse you can collect quotes, phrases, lists and links in your own collection of snippets. DailyMuse then sends you one of these snippets at random, once a day.

Snippets are written in plain text or using Markdown. You can tell DailyMuse to pick a snippet at random or to pick from a queue of previously unsent snippets.

Receving the same snippet on consecutive days doesn’t offer much value, so I added the ability to pick from snippets that hadn’t previously been sent. There is still a lot to be done with it, but with the it’s core value in place and working, it didn’t make sense to hold on to it and never ship it.

So if getting the right start to the day sounds like your thing, and you don’t mind curating your own collection of content to start the day with, then why not give DailyMuse a try? It’s free for 30 days after which you can subscribe for $2 per month or £20 per year.