Reading and Being Offline

2019-02-21 21:30:00 +0100

Some time ago I’ve listened to Libre Lounge episode where Chris and Serge discussed the idea of PDAs and how much more those devices were focused on productivity than the smartphones of today.

That was some good food for thought and I’ve started shifting with my own use of the phone to make it work better for me, from “let’s fill this gap between tasks with the rubbish found online” to “now that I’ve got a few spare minutes, what can I do to make the most of that time?” I’ve already found some cool tricks when trying to focus more but the thought of having a device that helps me do my job instead of distracting me even more was really appealing and I wanted to experiment.

So I’m using Nextcloud’s Notes and Bookmarks applications to collect information and of course Calendar application, which helps me and my wife plan things together. And I don’t have to be online to access my calendar or notes.

Another thing I use is Feeder, a feed reader that supports RSS, Atom and JSON feeds. This application downloads any new articles it notices, so I not only get a notification about new articles: I also have the ability to stay offline and still be able to read those articles. This is really nice, esp. with phones’ batteries getting so weak after a few years.

However, the most interesting thing designed to be available offline is the decentralized social network called Scuttlebutt. I’m not ready to describe its protocol or architecture, but the core concept behind this social network is the gossip protocol used to transport information across the network. It is an unbelievably cool project and I’d love to try it out, but unfortunately it’s been built on node.js, where things such as unpublishing a package are possible. (In this case, har-validator@5.1.2 has been unpublished. For people willing to use SSB (Secure Scuttlebutt) on Linux, this is fine because ther are pre-built binaries. For *BSD folks, building from source is the only option. And this option is unavailable.) I hope I’ll be able to join SSB when Sunrise Choir release their Rust-based node software.

For now I have to wait and imagine how awesome it would be to read entries from people I followed without access to the internet, for instance when travelling or when I just don’t want to be online.

We’re online almost all the time, with all kinds of information reaching our focus. But how much of that information do we actually need to get things done? And how much of it is rubbish that clutters our attention?

Software Design

2019-02-16 18:00:00 +0100

Part of my current job is supporting requirement engineers during design stage. However, I am supposed to support engineers from my team and each team has their own solution architect. This week, however, another team’s requirements engineers have come to my desk and asked for support.

They were working on lice-cycle of an important business object and wanted to design it with clean and elegant implementation in mind. They’ve been considering two major approaches to marking that business object as having reached a given stage in its life-cycle:

  • flags in entities representing certain conditions being met (so when a business event takes place, appropriate flag is set);
  • states, of which there would be potentially quite a lot and the resulting state diagram would be very complex.

It turned out that their team’s solution architect did not get involved in discussions like that and so they came to me. For me, solving design problems is one of the most satisfying activities, so I’ve jumped in right away.

In the end, I’ve suggested using Event Sourcing for the following reasons:

  • they need to support auditing, so tracking business objects’ properties along their life-cycle is a must;
  • from my perspective, what they’ve been trying to represent as flags or states, could as well be represented as events. In fact, they are business events.

It’s been very rewarding and I’m looking forward for some more design problems to solve!

Too much

2019-01-19 21:00:00 +0100

I’m so tired of the complexity of the systems I use every day… First of all, I have to use Microsoft Windows at work, while on my private laptop I’m using FreeBSD. Having to switch between these two environments so often is already exhausting (due to different philosophies), while it’s just the beginning.

Each month at work I have to submit detailed reports (not one but a few of them) of time spent on different tasks, each of these reports having a bit different approach to accounting my time. And of course there’s a suite of tools I have to use to cooperate smoothly: Outlook, Word, Excel and a bunch of other.

Then I get back home, turn on my laptop and use GNU Emacs, Claws Mail, Firefox and Qutebrowser. At home I can write any script to do some job quick-and-dirty whenever I want. I can install any software package. But most of the time, it’s going to be a different tool than I would use at work.

Next, there’s my phone, where I use yet another set of tools to communicate and get things done: K-9 Mail, Firefox Focus, Feeder, Riot, Conversations and perhaps some others that I can’t remember at the moment.

Switching tasks comes at a price (even when the goal is to write some text, it is a different task when done in GNU Emacs and a different one when done in Notepad++ or yet another text editor – these two have different contexts and my brain has to retrieve them with each switch).

I would like to have one device that I would carry around and make it adapt to the environment. It could, at least in theory, be just a user interface framework and an integration framework bound together. With these two, we would be able to teach our devices to talk to various services, regardless of their providers. It would actually be a facade and perhaps some adapters for underlying services, which we could use to completely avoid the context switches. Of course this is impossible to implement in this capitalist world because the end user would benefit the most, while providers would need to make their services competitive.

I remember reading Houyhnhnm Computing, a very interesting set of short texts about computing in the ideal world. I think that Lisp Machines had the potential to become something exactly like that. If done right, Urbit might become something like that as well, although at a higher cost.

But well… this is not going to happen. At least not in this world.

Week 2019-W01 in reading

2019-01-04 23:55:00 +0100

This week has been simple as there are only two items on my list:

  1. Swearing is Good For You.
  2. LeSS Framework: rules, principles and whatever I could find to grasp the key concepts around this framework.

I’m not into agile methodologies, I just follow the rules of the project I work for and that’s all. But at certain times it pays off to get the details right to avoid reinventing the wheel, so I’ve been doing my homework this week. The amount of interesting topics covered here (systems thinking, queuing theory, lean thinking) is impressive. It’s informative yet well written – which I had not expected when starting reading.

The book I’ve read this week, however, is brilliant. Dr Emma Byrne did a great job of covering the nasty topic of swear-words, which for some reason some adults consider “bad” even when talking to other adults while others forbid their chidren using them, regardless of their own use of that “bad language”. This is a hard problem because it’s tied to emotions and therefore few people can discuss it without also getting emotional.

While of course accepting social norms of the world around me, I will never agree that certain words are “bad”. Language is a communication tool and swear words are a part of it. They are also good at expressing emotions. Our intentions when using that language can be good or bad (or neutral), but the language itself is just a tool.

This book makes a number of very good points and is definitely worth reading. I’d recommend it to everybody, esp. parents of young children (so they don’t restrict their children’s language use too much and understand how important it is), women (to see that the world is changing and their situation is getting better) and those who second the idea of “preserving the traditional social order” (with men being strong and making money and women being innocent and gentle).

Staying Focused

2018-12-28 14:14:00 +0100

A while ago I’ve read Christopher Lemmer Webber’s post Will your tooling let me go offline and found it inspiring (a lot of his blog is inspiring for me, for that matter).

It starts with a quote from Donald Knuth:

I have been a happy man ever since January 1, 1990, when I no longer had an email address. I’d used email since about 1975, and it seems to me that 15 years of email is plenty for one lifetime.

Email is a wonderful thing for people whose role in life is to be on top of things. But not for me; my role is to be on the bottom of things. What I do takes long hours of studying and uninterruptible concentration. I try to learn certain areas of computer science exhaustively; then I try to digest that knowledge into a form that is accessible to people who don’t have time for such study.

Source: Knuth versus Email.

Christopher complains about tools having online-only documentation, which is counterproductive because going offline is the key to good focus and productivity. I like the idea of going offline for certain periods of time a lot and would like to do it at work and in my private life, but sometimes it’s hard. But how hard is it, and how much of it is just my habit of being online?

Not knowing exact answers, I’ve decided to be going offline more often. Therefore, I have:

  1. uninstalled Fediverse client from my phone;
  2. extended periods between mail-checks on my phone and at work (main account: 1 hour, less important accounts: 3 hours);
  3. got rid of all email notifications at work – now I only check for email when I want to (though I keep a few custom notifications based on rules so I don’t miss on things that are actually important);
  4. set up Nextcloud applications Notes and Bookmarks, to be able to collect notes and references to use later;
  5. switched from Fennec to Firefox Focus;
  6. started using Android’s Do Not Disturb feature when doing something I want to focus on (e.g. writing this entry).

I’ve already been using bullet journal for some time, which also helps because it’s completely analogue and offline, so I can use it without my laptop or phone. I like it a lot for several reasons, but perhaps it’s a topic for a blog post of its own.

Apart from the list above, there are other things one can do to further limit distractions:

  • full-screen mode of editor, IDE or whatever one’s using (and when full-screen is misssing, at least maximize the app);
  • specific distraction-limiting features of one’s tools (e.g. IntelliJ IDEA has a distraction-free mode);
  • one can always reduce the amount of information on the screen by customizing one’s tools. For instance, I’ve hidden almost all toolbars in MS Word at work, so I can focus on the text I’m reading (I rarely write anything).

All this is working great, esp. when used with some discipline and planning: I’ve set up calendar blockers for periods of time I want to use for uninterrupted work. Of course I’m flexible and can shift my blockers or cancel them altogether when there’s an important meeting I need to attend. But most of the timie it gives me a chance to focus and it’s got the additional benefit of a reminder, which helped me develop a habit.

What I like about my Nextcloud setup is that it gives me all I need to do to plan things and work on them: I put events in my calendar for things I don’t want to miss on particular day, I save bookmarks for things I want to read later or buy or work on in the future (e.g. when writing a longer text about a particular topic, it’s a great way to collect materials to read in preparation) and I keep notes about all this (things to write about, things I’ve read, etc.).

That Do Not Disturb feature of Android is also very useful, esp. thanks to the ability to define how long one wants to keep distractions away.

My main conclusion is that it pays off to learn one’s tools well because they can sometimes do a lot to help us stay focused. But of course even with the best tools, environment can always make it harder and then it’s all about creative approach and the art of the possible.