Posts in category "blogging"

Day 5

Wednesday 29 April

I use a Lenovo Thinkcentre M900 desktop computer that runs Arch Linux for work. This PC is a few years old now and has i7-6700 (3.40GHz) CPU (4 cores) and 16GB of memory which is adequate for my purposes.

I used to distro hop (Fedora, Linux Mint, Debian, Ubuntu, Solus) quite regularly but haven't done so for a while as Arch meets all my needs (rolling distribution) with almost modern, up-to-date versions of every software package I would ever need.

People may be surprised that Oracle Corporation allow the use of Linux but they do and it's officially supported (as long as you install corporate packages). However, I'm in a small minority but a lot of the hard core, experienced database engineers use Linux but the vast majority of my colleagues use Windows and MacBooks are also popular.

I have used the Gnome desktop for many years as I like the UI design and the minimal look and feel. I don't use workspaces and explicitly disable that feature. My environment is fairly vanilla with the following Gnome extensions:

  • OpenWeather
  • Dash to Dock
  • Internet Radio
  • Places Status Indicator

The following applications are available from the Dock which is placed at the bottom of my screen.

1) Firefox

I'm not particularly anti-Google and I previously used Chrome until it span my CPU at 100% playing videos so I switched to Firefox and haven't had a reason to switch back.

Like Gnome, my Firefox is fairly unadorned with extensions but I do use the uBlock Origin, Privacy Badger, Feedbro (RSS reader) and OpenGNOME extensions.

Another extension that has saved my bacon on a few occasions (and I highly recommend) is 'Form History Control' which preserves text after you inadvertently hit 'Back' or are forced to refresh a page (presenting a blank form, losing 24 minutes precious typing).

2) Thunderbird

I really dislike Outlook and the proprietary lock-in. Have you ever tried migrating data out of Outlook ?. Thankfully, my enlightened employer lets me choose any IMAP capable email client.

3) Emacs

I use vi and Emacs almost interchangeably. I use Emacs for my own writing, coding and note taking (orgmode) but often I'm working on remote environments for customers where Emacs isn't available.

At one time, I used mu4e and then Gnus to handle all email completely within Emacs but the Thunderbird/Lightning calendar integration won me over. For now.

4) Terminal

Mainly for running top and yay to update Arch. I do most file access and manipulation using dired in Emacs.

5) VirtualBox

I use VM's quite regularly for development and testing and have access to more powerful database servers for performance and stress testing using larger data volumes.

Unfortunately, I still am compelled to use a Windows VM - solely to accommodate colleagues who still (in 2020) somehow manage to contrive to produce complex Excel spreadsheets, Powerpoint presentations and Word documents that don't render properly in LibreOffice.

6) SQL Developer

Standard Oracle GUI tool which also provides access to other databases (PostgreSQL, MySQL, SQL Server) and products (APEX, ORDS, OEM) and a data modeller tool.

7) Zoom

Previously, we used Cisco WebEx. Thankfully, last summer, we switched to Zoom. I know all about the security and privacy issues. However, as Zoom provides and maintains a native Linux client, they're beyond reproach in my book.

8) Remmina

A useful, integrated desktop client providing SSH, RDP, VNC connections to remote computers.

Obligatory screen shot.

Gnome Desktop

Day 4

Tuesday 28 April

Over the years, I have maintained a variety of blogs and migrated my content between most popular blogging platforms (WordPress, Blogger, Drupal, Ghost, Joomla, Habari, Typepad, Tumblr, Posterous, Jekyll, Django, Octopress, Nikola, Hugo, Pelican).

For this #100DaysToOffload exercise, I am using write.as. I currently have a neglected but perfectly functional blog which uses a static site generator (Hugo) and publishes the content on Amazon S3.

However, it's five months since I posted on that blog and I can guarantee that if I were to use that platform, the workflow would be:

  1. What is the precise filename syntax of a new Hugo blog post ?
  2. What is the precise syntax of the YAML front-matter ?
  3. How do I publish pages to S3 ?
  4. Oh wait, hang on. I remember now. I wrote a handy shell script for that. Where is it ?

Now, if I was more intelligent, I would not live my life endlessly re-circulating in Groundhog Day, forever condemned to relive my past mistakes. But I'm not so I am.

Yes, I know that I could have a shell alias and an Emacs template that did the necessary and deposited me directly in the editor ready to write. Patches welcome.

Using write.as has no much barriers. You just write. I remarked on Mastodon about the minimalist interface but this was not a criticism, far from it. I truly believe the stripped down minimalist UI is ruddy marvellous.

write.as minimal

Furthermore, write.as fits perfectly with Kev Quirk's urging to 'Just. Write' when he conjured up the idea of 100 Days To Offload.

You don't even need to register on write.as. You can simply post anonymously.

To get such a minimalist, clutter free, calming environment, you would typically need a 'Distraction Free' plugin on most other platforms. That's after you'd wasted an hour evaluating all the 'Distraction Free' plugins.

And another thing, the people behind write.as are great. For example, I had a minor issue with my post yesterday. As it contained two YouTube links, it was flagged as potentially spam and/or mindless click-bait (fair enough) but I sent a quick email to support and the issue was promptly resolved.

Day 3

Monday 27 April

I don't normally write much about my job. I guess that's because I am wary of revealing company confidential information but I work for Oracle Corporation and have done so since 2006. I am a Technical Consultant ('Jack of all Trades, Master of None').

I find 'Dear Diary' blog posts quite tedious but anyway, during these strange times, it's something to write about.

I have been a remote worker since I returned to work following a 'minor health issue' in 2011 so this remote working thing isn't novel, strange, challenging or depressing for me. I don't need endless quizzes, fancy dress meetings or 'Best Zoom background' competitions to motivate me or raise my spirits.

09:00 - login and process email.

It's a cliche but you do need to be quite disciplined when you're a remote worker. I always endeavour to get to my height adjustable desk by 09:00, err, let's say 09:30, well at least by 10:00 (in case anyone notices).

The temptation to lounge around in my pyjamas watching mindless daytime TV or the tennis from Wimbledon has never been an issue for me. I feel very lucky to be able to work from home. I have done my share of sitting in airport lounges, staying in expensive hotels, eating in lovely restaurants (on my own) during years of foreign travel to help customers in glamorous locations like Prague, Bergen, Madrid and West Bromwich.

It's down to trust. Your employer is trusting you to get the job done. Guess what - if you don't, someone, somewhere will notice.

09:30 - demo to colleagues of a embryonic APEX application that, essentially, provides real-time access to an Excel spreadsheet on an internal Web site. Sounds trivial but this enables multi-user access and a single source of truth without managers circulating the file via email which is beneficial.

11:30 - complete a design document for an external client describing how we intend to purge data from FY14 due to legal requirements. Again, straightforward but slightly complicated by the fact, the client needs to review and approve the data to be removed. The data volumes to be purged involves millions of records to there is no way they can possibly meaningfully 'review' the data but the purged data is preserved in separate tables for audit purposes (and recovery in case we got the threshold date wrong)

13:00 - lunch. A cheese sandwich using home-made bread. We didn't have any yeast so, while it smelled nice coming out of the oven, it was slightly dense and heavy going. A single slice felt like you'd eaten an entire loaf.

14:00 - research an longer-term internal project providing an APEX front-end to a Document repository. Sounds interesting and is a real project with eight people involved using REST API's. Most of my APEX work to date has been just me on my own so it will be useful to work with a more experienced colleague and learn something.

15:00 - cherry picking presentations from the recent APEX@Home marathon.

The Covid-19 Therapeutic Learning System (TLS) was particularly interesting to me as it was a real-life application developed very quickly. Imagine demonstrating an initial prototype to Larry Ellison over Zoom !

16:00 - researching pastel coloured histograms, doughnut rings and pie charts in APEX.

17:00 - wife's return from work imminent (she is a nurse in a GP surgery) so put some salmon fillets in the oven to accompany the roasted vegetable couscous with feta cheese she made on Sunday.

18:00 - moment of weakness and I find myself watching 'About A Girl' from Nirvana's first ever live gig at the Pyramid Club in New York from 1989.

Day 2

Sunday 26 April

Wife cut my hair. Probably not as good as the lady who visits us at home but my sideburns no longer resemble those of a 1970's George Best. Fringe is sub-optimal but who cares. Not me.

Another walk in Richmond Park. Entered at Kingston Gate, walked up to Isabella Plantation car park and back again.

Don't know how many steps or distance but it takes us about an hour.

Wife painted (most of) the lounge. The fact that the circle behind the wall clock was a darker blue than the rest of the room inexplicably bothered her.

It didn't bother me one jot so I made myself scarce by washing her car and vacuuming the interior. Somehow she had contrived to park somewhere under a tree and the vehicle looked like it had been on safari through the Serengeti national park (i.e. coated in bird muck). Some of it needed scraping off with my fingers. Which was nice.

4pm saw 'Street Bingo'. A neighbour rigged up a small amplifier and we all crossed numbers off a grid. Someone got the first line, someone else got the entire grid ('House'). This was followed by a quiz of 'Five things'.

Five Harry Potter books, five Beatles songs, five characters from 'Friends' etc. The teenage kids enjoyed it. We didn't win at bingo and didn't win a single round of the quiz but we enjoyed a glass of wine in the sun and chatting with our immediate neighbours.

We are now best friends forever after they had kindly bought us six Magnum ice-creams as a trade for the use of our Karcher high-pressure water jetwash to clean their patio.

Day 1

Saturday 25 April

Went for a walk in Richmond Park. Still swerving people, mainly on the roads approaching the park and at the entrance gates.

Great to see families out on bikes, dog walkers, people jogging and folk enjoying the open spaces with no cars and no cyclists on the roads.

Thankfully, didn't see any cyclists flouting the massive 'NO CYCLING' signs on every gate as that was getting irritating and rather stressful.

Bought a baguette for lunch from a bakery/coffee shop fresh from the oven. Strictly speaking, a breach of the advice but he's a small, local business struggling, there was no queue and the bread was warm and fresh from the oven.

Hoovered the lawn and mowed the house.

The wife made some minestrone soup and a lamb tagine. This enforced lockdown is turning her into a domestic goddess.

the curious case of the filling station incident

7:54am on a quiet Monday morning. Quiet because it's New Years Eve. I have just put £15 into a hire car prior to returning the vehicle.

There's just one gentleman is in front of me paying. He has a fuel card so he's asked for his registration. He can't remember this so looks out to the forecourt to check. Maybe this is a hire car too although that seems unlikely as it's an ancient, brown, battered Volvo estate. No problem. Then he's asked for his mileage which he doesn't know. This is optional so no problem.

He leaves and I advance to pay my £15.02.

'Morning. I'm on Pump 8.'

Cashier hits a button and asks me 'Sorry, what pump did you say ?'

'Pump 8. £15.02'.

The cashier then spontaneously closes the till, grabs a high visibility jacket, mutters 'Sorry, Sir' and runs outside to the forecourt where the gentleman who just paid for petrol is slowly getting into the passenger seat of the Volvo.

I stand and watch the shutters slowly coming down as another member of staff refills this hot tray with pasties. I sigh inwardly as I realise what has happened. Still, no problem. I'm not in a hurry and those pasties do smell lovely.

The Volvo passenger slowly returns to the till.

The panting cashier removes his high-vis jacket and says:-

'Sir, you can either pay £5 or cancel the original transaction and start again'.

The gentleman looks puzzled and remarks in a manner eerily reminiscent of Roy Hodgson when he was hauled before the world's press and sporting media after England's defeat to Iceland.

'Sorry - dunno. I don't really know why I'm even here'.

I helpfully offer:-

'I think you've paid for my petrol instead of yours'.

'Oh - well I ain't got any cash so we'd gonna have to cancel and try again'.

The long, drawn out transaction is re-keyed. The man studiously avoids eye contact.

Finally, he has successfully managed to pay for petrol and a copy of the Sun newspaper.

As he finally declines his VAT receipt, he catches my eye as he turns to go.

'No problem, mate. Don't mention it'.

'Mention what ?'

'Well, you've delayed me for 5 minutes just because you paid for the wrong petrol pump'.

'Not my fault, mate, so nothing to say sorry for.'

So now, in this festive season filled with the spirit of goodwill to all men, this wasn't the best thing to say to me at 08:04 on a Monday morning.

All it needed was a quick, polite word on the way out.

'Sorry, mate. Bit early in the morning for me. Not had my morning coffee yet.'

Alternatively...

'Sorry, mate but I forgot to check the pump number. Happy New Year !'

Or even...

'Sorry mate, Dave normally pays but he's busy phoning the depot'.

But no, he couldn't just bring himself to mutter the word 'Sorry'.

Instead he points at the cashier and says:-

'Anyway, it was all his fucking fault'.

'Come on. You fill a car up with petrol. You're supposed to know the pump number or the amount.'

'I'm just the passenger. Dave asked me to pay.'

'Yeah - but look. There's your car and there's a massive NUMBER THREE above your petrol pump. It's not his job to monitor what pump you've used'.

'So what am I supposed to do ? Ask Dave how much I've put in ? Oh yeah - that'll work. Let's try that, shall we ?'

Then the man walks to the automatic doors and bellows to Dave. Amusingly, the automatic doors kept opening and closing on him which angered him even more.

'HOW MUCH FUCKING PETROL HAVE YOU PUT IN DAVE ? DAVE ! DAVE ! HOW MUCH DO I HAVE TO PAY ? DAVE - HOW MUCH FUCKING PETROL ?!'

And with that, he left and got into the passenger seat and Dave drove off.

The cashier then shrugged his shoulders and said 'Sorry' to me as I advanced to pay for my own petrol at pump 8 which totalled £15.02.

I then apologised to a rather perplexed and anxious looking lady for the delay as she purchased her last unleaded fuel of 2018 as the shutters were slowly raised again.

Another blog migration

It all started innocuously enough with this post from Alex Shroeder

https://octodon.social/@kensanata/101052266709264418

Writing tools.
1. Emacs
2. Wiki
What about you ?

I spontaneously replied.

Emacs
Orgmode
Nikola

This reminded me that since, I had recently migrated my desktop from Arch Linux to Fedora 29, I needed to reinstall Nikola and check that the blog I never use still could be built successfully.

Oh - how exciting. Nikola has recently released version 8.0.1 and I was on the previous version - 7.8.15. I quickly created a Python 3 virtual environment and installed Nikola.

I generated my site as normal but encountered an error. One post failed to be processed correctly. This was strange so I created another virtual environment and tried using the tried and trusted Nikola 7.8.15 which I knew worked. Definitely.

Only, inevitably, Nikola 7.8.15 also failed. Oh well, a lot has changed since I last posted to my blog way back in January 2017. The version of Emacs has changed, the version of orgmode has changed. I examined the blog entry that was causing a problem. It was a fairly standard text article with a single source code block. As the source block was 'BASIC', the language wasn't explicitly specified. This isn't a problem in orgmode normally but the Nikola orgmode plugin got confused so I just pretended the code snippet was 'C' and everything worked again.

As I was researching the issue, I noticed that another static site generator, Hugo, had also added native orgmode support over a year ago. I had previously experimented with Hugo and found it was incredibly fast to generate my site - even when I added in my entire blog output (978 posts).

Clearly, there was no point whatsoever in experimenting with the Hugo orgmode support for a blog I never used any more. So I went ahead and did so anyway and found the Hugo orgmode support was pretty good. The orgmode headers were supported whereas Nikola used a comment section for the front matter.

Actually, there was a reason for this resurrected interest in maintaining a blog. After Google decided to pull the plug on Google Plus, I had ditched that platform in a fit of pique and experimented with Diaspora for longer form articles and Mastodon for microblogging.

The problem with Diaspora is that it doesn't currently federate with the ActivityPub protocol (which includes Mastodon sites) and the other problem is that, just like Google, it could disappear.

A Mastodon/Pleroma instance with no character limit might solve the problem but, to be honest, I prefer to read longer articles on a blog.

So I think there is still a place for a self-hosted blog, complete with an RSS feed.

What I have learned however is that blog migrations are still problematic and time-consuming. Even converting from a Markdown blog to another Markdown blog, the differences in the meta-data (categories, tags), inevitably no-one has though to standardise on a single, universal timestamp format and images (no matter where you locate them) are always a problem so there will always be some sort of migration effort required.

To guard against this, I have re-converted from orgmode to Markdown and my front-matter now consists solely of:-

---
title: "Another blog migration"
date: 2018-11-14T10:43:58Z
---

No categories, no tags, no author, no description, no keywords, no slugs, no comments.

Just words.

Code highlight example

This is the famous Hello world program written in Python in colour using Markdown.

#!/usr/bin/env python
import sys

def hello(name='world'):
    greeting = "hello " + name
    print(greeting)

if __name__ == "__main__":
    hello(*sys.argv[1:])

This took me a long time to get working.

from GitHub pages to Amazon S3

Although hosting on GitHub pages is an excellent option, I decided to move this blog to Amazon S3, mainly because I have used S3 before. Also GitHub pages only supports a limited set of Jekyll plugins and I wanted more flexibility to add any plugin and (potentially) run a different version of Jekyll.

I also took the opportunity to switch the theme to the rather minimalistic but stylish Poole and installed the useful s3website utility to automatically synchronise the static site to Amazon S3. As you are charged for upload/download traffic, an intelligent sync process (rather than uploading everything) for deployment is important.

Welcome

Welcome...to the atrocity exhibition.

Fittingly, this site is powered by Jekyll and Github pages but the precise details will probably take a series of 1,739 posts.