Skip to main content

Miniflux Service Fails to Start at Boot

Pleased as punch, with my Miniflux instance.
RSS, is how I catch up with everything newsy and techy and with what people I want to hear from, have to say.
I love it.

I did face one teensy issue with it though.
Every time I rebooted my machine, the Miniflux service would fail to start.
I would just manually do a systemctl restart miniflux and it would start right up, with that innocent doggy face.


image courtesy, Beverly & Pack, on Flickr

The last few days however, it’s been niggling me no end, because I have been rebooting the box ever so often.
Only when I go check up on RSS, at the end of the day or in the morning, do I realise something’s off.
So I checked up on Miniflux today, with a systemctl status miniflux
And I saw,

May 14 04:52:40 minmachine miniflux[706]: 
[FATAL] You must run the SQL migrations, 
the database schema is not up to date: current=v0 expected=v28

That did not sound right.
I religiously do a migrations step, every time it’s needed.

And then the penny dropped.
The current version of the schema, according to the error, was v0
That was not at all in line, with what I used to see, whenever I migrated.
It used to run from v25 to v26 to whatever. (These are not the actual numbers, I’m just pulling them out of my ass :P)
Not v0

It struck me that Miniflux might be starting up, before the database it uses, does.
So I just modified my Miniflux systemd script1 to startup after the database.
Like so …

Description=Miniflux Service
Requires=postgresql.service postgresql.service

Disable service, enable service, reboot system to check if all is well, and all that jazz …
And et voilà! Problem solved!
Miniflux and me, sitting in a tree … h-a-p-p-i-e-e!

  1. I use the helpful script miniflux.service from the docs

A Hundred Days of Code, Day 029

Awfully proud of myself today.
I wrote little program to scratch an itch, I had.
It’s still rough, but it does what I want it to, and that makes me happpy.
I go to Poetry Foundations’ Poem of the Day ever so often to catch a poem.
And I wondered, what if the daily poem showed up in my RSS reader everyday?
I searched and unfortunately couldn’t find a feed.

So I did the next best thing.
Armed with my newly acquired, Python knowledge, I set out to see if I could just get a link to a new poem daily.
And what I ended up doing was writing a program, that scraped the webpage metadata for the date, compared it to today and if it was, created a baby xml feed for me, that I have now put into my reader.

It’s a blank entry. The title takes me to the poem foundations page, so I don’t miss a day.
I put the program on my linode and then scheduled a cron job that runs the script once a day and moves the xml file to the appropriate place.
Today’s run was brilliant. Let’s see if it holds up tomorrow.

Right now it just overwrites the current item, since that is all I need.
But I could also look at building a list of daily items, if I so desire, later.
I need to just show up every day, for this positive ratchet to continue.
Like Seth says,

The hard part is “steady.”

Anyone can go slow. It takes a special kind of commitment to do it steadily, drip after drip, until you get to where you're going.

The code as usual, is here on Gitlab and Github1

  1. I still have to document it. But I will save all that for another day. More practice to do! 

A Hundred Days of Code, Day 028

This probably will be a few days of bike shedding.
I finally came up with a problem, I want to solve for myself and then realised, I don’t know enough command line fu to integrate my stuff with my operating system, the way I like.
So I am going to spend time, learning how to use the bash shell.
Been searching, copying and modifying scripts for far too long now.
Best to get this skill in my kitty as soon as I can possibly learn it.

P.S. Learnt enough in a marathon 12 hour session to be dangerous, to know what I want and look it up.


Help the folks, who need your help the most at this hour!

Donate to Goonj to help our daily wage earners and labourers.

trees reflecting in a pond

click to embiggen

The time will come
when, with elation,
you will greet yourself arriving
at your own door, in your own mirror,
and each will smile at the other’s welcome,
and say, sit here. Eat.
You will love again the stranger who was your self.
Give wine. Give bread. Give back your heart
to itself, to the stranger who has loved you

all your life, whom you ignored
for another, who knows you by heart.
Take down the love letters from the bookshelf,

the photographs, the desperate notes,
peel your own image from the mirror.
Sit. Feast on your life.

— Derek Walcott, Love after love.

Pair with these beautiful odes to the poem and the poet.

P.S. Subscribe to my mailing list!
Forward these to your friends and get them to subscribe!
P.P.S. Feed my insatiable reading habit.

A Hundred Days of Code, Day 027 (Python Beyond The Basics - Object Oriented Programming)

Realised that while I do know rough and tumble basic Python, I have a long way to go before I can do things or even understand things.

Half of my frustration writing, is because I cannot do the things, I want to do, and I struggle along and by the time, some generous friend shows me or I find the answer on the net, I realise that I don’t know this part of Python at all!
I have a vocabulary problem. I know to talk like a child, not communicate like an adult.

So I have decided (let’s see how this pans out) to spend Saturdays learning something new about Python. Do some deep work.
Probably once I know enough this time could be spent working deeply on a project.
The realisation is that I need to do both, study as well as practice to learn as fast as I can.

To that end, I went and learnt about classes in Python today.
I used David Blaikie’s Python Beyond The Basics - Object Oriented Programming to get up to speed.
This was an excellent, class on the basics of classes and their implementation in Python.
I can honestly say, I know a lot more about reading and understanding Python code now that I have been through this class.
Classes, the Three Pillars, Subclasses, Exceptions, Debugging … all the basics are there.

Now, to put this knowledge to good use, in the coming weeks.

A Hundred Days of Code, Day 026 (Grokking Algorithms)

With my area in near-quarantine, I was too busy rushing around, making sure family was ok.

Had a lot of patches of free time, in the middle of things though.
So I decided to read about algorithms.
I know I need a good base in the future, and knowing about the turtles that underlie my new world.

I decided to start small, and picked up Grokking Algorithms.
I loved it.
It taught me about the big low hanging basic problems that folks need to solve using computers and the patterns / recipes / algorithms we use to solve it.
Problems like how to sort stuff (selection sort, quicksort) And how we can break down a big problem into a set of similar problems that get smaller and smaller and solving them all using a single solution from the inside of the problem onion, outwards, or from the smallest Matryoshka doll to the largest. (recursion)
And how lists function and how to find the most efficient way to get from point A to point B.
It covers a set of the basic algorithms in use today and has plenty of pointers to more efficient ways of how things are done in the real world and also where to find more advanced problems.

It’s engaging, teaches its points with stories and pictures and has exercises to ensure you are paying attention.
I loved it.
I loved it so much, I finished it in a day :)
If you are just beginning and you want an easy way to understand what all this computer stuff is made of, this is a very good book.

A Hundred Days of Code, Day 025

To get over the hump of just blindly following videos, and after some talking over with Kushal, we got to me solving problems that he would gimme.

So now I can alternate between a regular path and real world practice.
The first couple were about using psutil to do various things.
The first one would give me back my CPU and memory usage, while the other one gives me what programs are using the network on which ports.
This was fun to do!

Code’s here on Gitlab (1, 2) and on Github (1, 2)

A Hundred Days of Code, Day 024

Done with a new app!
This one is a small app that searches for some text you want, through a folder full of files. I learnt

  • about try / except blocks. this was necessary to catch non text files.
  • learnt about recursive programming. I understand it in principle now. I need more practice.
  • learnt about generators. This too, I get in principle, but need lots more practice.

Code’s here on Gitlab and on Github.