Gaptap – the vision

Reading Time: 3 minutes

This is a story of the development of Gaptap for Linux.

As operating systems get security updates and other kinds of patches, your own instance will similarly develop a ‘gap’ – you’re lagging behind. Depending on how the updates have been set up, there’s

There’s a few underlying causes which are making the gap wider. Blame you, blame me. We resist change. We’d like to be in peace, undisturbed. Believe me, everyone’s been there.

It was post-Christmas holidays, 2018. Perfect environment to gobble some code. I was actually thrilled once again by ‘dialog’, a tool that makes it ~somewhat comfortable to create retro-look ASCII character menus. That is, emphasis on the word somewhat.

This used to be and still is a major issue; the longer you do not update your OS, the bigger a attack window the adversaries (bad guys) get.

With a lot of hobby programming projects, I’ve found that there’s a really fascinating phenomena. Programming is an art, where you want to skip – or fast forward – to the results. But the road is one that doesn’t let you simply skip parts. You will touch tough.

I had a vision, perhaps fueled even by the sheer retro appeal of ‘dialog’, of managing Ubuntu software packages powerfully. The most interesting part is to make things click in the “backend” logic, but a practical part of making something useful and stick to the users, is making it feel good. Linux CLI software is known to be a bit scruffy, and bare. It’s ok – part of the philosophy. But with Gaptap I wanted to dress it up with a specific slick, though character-based user interface. A program called dialog seems to fit perfectly. It takes a lot of the rote work away, giving a parametrized system that

“Run, tap a key, let the program do its magic. You’re done. All simple and nice.”

What, where, how, why?

Ubuntu Linux is composed by the Linux kernel; often also a graphical user interface (Gnome / others), and a lot of other software packages. Keeping the packages up to date is crucial for security. Vulnerabilities are bugs in software that have known exploits. An exploit means that someone can use the software to gain information from your machine, possibly without even you knowing it.

The packages are commonly kept up to date by aptitude – a (real) package manager. Word ‘real’ in the sense that what I am developing is merely sugar on top of real functionality. With Gaptap, I want to make things more accessible and casual. Software updates should be a walk in the park.

What’s the role of package managers?

Deep down in the technical sense, package managers are fairly complex piece of software that keep track of installed software, resolve dependencies, offer solutions to user – all in an aim to keep the whole selection of software as stable and secure as possible. Early in the prehistory of operating systems this aspect of management was completely overlooked.

Package managers are often divided roughly into a backend and frontend. The backend is the really heavy-lifter, while frontend offers human users sensible choices. Some frontends are creamed with nice graphics, while others are not. In Linux-world, it’s often the results, speed, consistency and repeatability that matter over the aeshetics.

On top of aptitude there’s apt which is said to be a “front-end”. apt supports the familiar commands like

apt install pine

With Gaptap, I would either directly be driving aptitude or piggy-backing on apt. Future will show.

Basic idea of Gaptap

  • make a dynamic list of upgradeable packages
  • show the list appropriately: paginated and formatted, on-screen
  • allow user to choose updates in a intuitive way: cursor keys + Space
  • support quickly quitting the app with Esc and/or “Q” key (quit)
  • when user confirms choices, gaptap forms a “execution line”
  • the execution line gets passed down to bash (interpreter)
  • results is captured back to Gaptap so it knows what is going on

The challenge that users face is that of change resistance. We’d like to just keep churning as-is, uninterrupted. Updates can be a curse word for many. Ubuntu and other Linux flavors have done a great job with the whole update cycle. Linux has far surpassed rivals in ease of updating, and also in the non-invasive nature of the update process.

Kuvahaun tulos haulle updating windows please wait

Whereas some other operating systems are notorious for showing mind-boggling numbers in blatantly unmotivating window, Linux does a great job.

Gaptap started with a rather simple goal: make Linux software updates even better. Simple. Fast. Powerful.


Bag of writer’s tricks – importance of adding an image

Reading Time: 2 minutes

Adding an image to every blog post you put out is one of the fundamentals of SEO – search engine optimization. And SEO in turn is what gives your blog an audience.

Anamnesis, please!

Graph of views profile during 12 months

I started doing a bit of learning of, and perhaps more importantly, taking action to amend this blog. Long story short; there’s plenty of things to do here. I got into a situation where sitting atop of 400+ articles, written during a period of around 9 years, got me a constant background traffic. I felt however that I had overlooked a few very essential and easily implementable improvements.

Dr J – Still in it…

If you start digging into SEO, you’ll discover – probably quite soon in the path – a kind of dark aura around the theme. Search Engine Optimization is something that I’m definitely not an authority in. However, I like to combine a bit of knowledge about SEO with generic site usability (UX). What I love to do is:

  • research,
  • apply,
  • ..and tell the story

That’s what blogging has always been to me. It’s a kind of chimera between story telling, being a “digital journalist” for a moment, and getting an echo out of the experience.

Today I was listing the articles in WordPress backend (the ‘Admin’ side of my blog).

I noticed that very few of my blog articles had images. An image can make a significant impact.

Reasons for including that image?

Having an image in a blog post is an aesthetic issue, and an image can whet the appetite for reading. Ok – let’s face reality: You don’t want to use those boring stock photos. You don’t have the time to start running around with a camera. So there must be some good justifications for going the extra mile and adding an image. Which brings us to consider this: perhaps one of the strongest causes for the inclusion of an image in a blog post is that the image serves as quite a powerful search “anchor” – something that appears in search results, and can result in a click-through. So to put things simple: an image can be vital element in helping exposing your other content to the readers.

Happy writing - think cotton candy!

One of the most useful and insightful aspects to include in any SEO process is You: your own thoughts, actions and anything that goes in between. That is, think what you do while ordinarily using the web. How do you search? What makes you finally take an action while in the search results listing? Is it the way a header has been written, or the contents of the header? Or – is it that image that entices? Or is it a familiar author name – ie. trust?

Happy writing!


Gutenberg from a dev point of view

Reading Time: 2 minutes

Gutenberg, the new editor for WordPress, hit my radar as late as somewhere in October-November 2018. Upon closer inspection I realized two things: first, I could try it out immediately (live) on my blog. Second, the source is all open and hosted at GitHub. So it’s easy to keep track of what happens in the “works”.

As I am a software developer, it’s interesting to take a look inside, too. There’s 2 simple ways to do this:

  • clone the repository to your disk with ‘git clone’
  • browse the Github with a web browser (to view code)

Using git to get a copy of Gutenberg

With git, the benefit is that you can really do all the experimentation you want within Gutenberg code. It’s yours. View, edit, test run. If you’re unfamiliar with git, read a tutorial. You’ll find many through Google. Git is a tool especially aimed for developers, to help spread a software project, track the files, and merge changes back to the project.

If you have good ideas and code of your own within Gutenberg, submit a patch (as a Pull Request) back to the project. Check the Gutenberg project under Github. There’s specific information about all things you need to know to engage with the editor development.

With the git method, you afford the familiar environment: your favorite text editor, and all the tools you use for software projects. (P.S. ‘git’ has an extensive documentation in itself, but if you’re looking for a book to refer to, I can recommend O’Reilly Git Pocket Guide. Really cozy and a small form factor)

Github repository – for the curious viewer

The Gutenberg at GitHub page allows you to view into the project files. You can’t directly make changes, though. GitHub is a large repository of projects, of which Gutenberg is one. Through the GitHub you can specifically be social, and report findings through the “Issues” functionality within.

Gutenberg changes the paradigm of editing somewhat radically. Notably WordPress has kept the same editor (Classic Editor) for years. In fact, the Classic Editor was showcased most likely in around 2009, as the Gutenberg project page talks about ‘…[Gutenberg] looks at the editor as more than a content field, revisiting a layout that has been largely unchanged for almost a decade.’


SEO afterburning – A few words about site improvement

Reading Time: 4 minutes

There’s two things I want to reveal right now. It’s 25th December, 2018 – and I have a goal: beat my previous record of visits to the blog! This is so, so close – and it’s getting me whetted! Exciting!

Second one is that the ‘SEO afterburning’ is a term I just made. I don’t know whether it’s “taken” or not, but I mean by SEO afterburning that you’ve written a bunch of articles, perhaps hundreds, without any eye for SEO – and then afterwards you start doing SEO. Is this a vain effort? I don’t believe so. Just remember: any changes you do right now to your blog, will be shown in search results within the next weeks and months, not immediately. Google adapts the search results – not immediately, but in a damped way (averaging over time). For details, see the PageRank (Wikipedia).

I had written quite a lot of blog articles during 2008-2017. Then, in 2017, I fused two blogs together, since my Blogspot (by Google) blog space simply was adrift without my attention. Now Jukkasoft is running in a WordPress “hosted”, ie running the latest WordPress blog engine. It’s a 200 bucks per year plan, and for me, worth every nickel.

There’s a crew called “WordPress happiness engineers” working at Automattic, and they help out if there’s any sort of emergency with the tech. I’ve only had one incident, and it was fixed super fast. Few minutes – all online. I opened a chat with the team, got help, and the fix was to the point. I’m really happy with what kind of service WordPress provides.

Administrative tasks aside, I could concentrate 100% on creating quality content.

However, one major issue: I realized that a lot of even very basic SEO tricks had passed my radar. I didn’t simply plan the interweb of articles when I started blogging. Instead, I kept producing more. More. More. Without a thought for..

  • internal link structure in my blog
  • mobile design

Let’s go through the above points a bit more.

Internal link structure in a blog?

As obvious as it sounds now, I had not paid any attention to interlinking my various articles. So I had a forest of offerings, around 400+ articles, but no paths between them. This is bad for a couple of things:

  • people tend to have a critical moment after reading an article, where they can easily bounce from your site, if you don’t offer a natural continuation (a link)
  • Google as a search engine gives your site’s articles a weight called Page rank. It’s a score, by Google, indicating how worthy your pages (and site as whole) are.

Is ‘link juice’ real?

The score that Google deals out to your (blog) page, often called “link juice”, however, has been a subject of controversy. PageRank per se is real, for sure (although its exact ingredients, the way the algorithm has been implemented, is a trade secret). But what about the link juice? Ie the thing that the PageRank is dealt to any outgoing links from the said page?

Proponents of the link juice tell that the PageRank score gets used (spread) to outbound internal links, so it’s useful to have the internal links. Those who say there is no such thing as link juice basically point out that Google’s universe of PageRanks is like a closed thermodynamic system: the amount of energy (your site’s total PageRank) is constant – whatever you do inside the system, ie your own blog’s domain, doesn’t change the course of things.


Mobile. For me, it brings a lot of thorny issues. Let’s carve out the details, also, so as to speak from the same point of view.

Mobile means the appearance and behavior of your blog post in a smartphone’s web browser.

I am dichotomic on this one; having been quite a fan of all things mobile, since about 20 years ago. I did technical development (programming) for the very early smart mobiles in 2000. It was Java all way long. Not much to do with user interface design, if any. Then, from 2014 mobile tech started touching my daily work much more again. This time with the UI involved heavily.

Stuck in details?

Keep It Simple, Anakin

With blogs and mobile there’s a real danger of getting stuck in technical nitty gritty. Why? If you think about it logically, you might first say “Because of orientation – mobiles can be portrait or landscape”. True. So that would imply that your blog (CSS) needs to have responsive design targeting both orientations; but wait! So should the design for ordinary desktop browsers, although often they’re only in landscape mode (wider screen dimension than the height of the screen).

Mobiles come in a variety of screen dimensions. Good responsive design can slap two flies with one go – but it usually takes some extra effort. Many of these things depend on what your blogging platform (tech stack) for creation is. If you’re flying with an automatically adapting high-end blog engine, it doesn’t take much effort for being truly a par with mobile in mind.

If you’re low on experience with CSS and mobile design in general, the tinkering can grind your creative juice almost to nil. As I said, take care – pay attention, and know what you like to do!

In mobile design, first settle to a good stable known position (TM). Then tinker onwards with little steps. Learning mobile design isn’t a waste of time, but it can be daunting.

I personally like WordPress a lot, and one of the reasons is that I can really just concentrate on writing – the rest is taken care by WordPress engine.


Book publication using blockchain

Reading Time: < 1 minuteHelp wanted.

Raw idea, very brainstormish:

Book publication using blockchain

– integrity of a story
– the “checksum” mechanism is based on entropy of Finnish language
– the story will be complete, when all its pieces have been delivered
and reassembled
– since the book (Teknovelho 1) is about Damocles, it is a nice
trick to demonstrate also the technology described within as
the delivery mechanism of the book

algorithm of damocles in delivering a eBook (a natural language story)

– basic data unit = 1 line of text
– variable length lines
– max. line length = 80 (arbitrary limit)
– the original text is split into chunks
– the “whole book delivered?” boolean is calculated by using
verification algorithm

– first encrypt the book from orginal text
– deliver the fragment to recipient
– recipient knowing the
– algorithm used
– can decrypt (verify) their own version of the book
– story cannot be altered
– the writer can stream the book “interleaved” if necessary
– encryption does not mean enciphering, but merely that
the whole story cannot be claimed to be received

encryption of the book

– use chaining algorithm
– is a key needed, or NOT?
– if key is needed, author has the encryption key
– make the enciphered text using algorithm E(p,k)
– the original corpus needs to be complete before encryption can happen

decryption of the book

– get all cipher text blocks
– assemble the book by verification
– calculate the checksum of the whole assembled (candidate)
– looks exactly like Damocles described within the book