Please, would you help me crossing the Maidan?

the last wish of the old kobzar1Blind street musicians playing the Kobza, a Ukrainian folk music instrument, for our purposes kobzar=lirnyk=banduryst

“Please, would you help me crossing the Maidan3For now “city square”; More about the connotations of this word, as I see them, further down
To the far side, there is a field, I reckon
The bees hum quietly, a little piece of heaven
Please, would you help me crossing the Maidan

Please, would you help me crossing the Maidan
Where there’s laughter, fighting, feasts and food on shelves 2“shelves” almost makes me cry, but the third line is perfect, haven’t found any other normal rhyme….
Where no one hears, neither me nor themselves
Please, would you help me crossing the Maidan

Please, would you help me crossing the Maidan
There cries a woman; in the past we were together 4 Formerly “we’ve been together” but this would imply they are /still/ together
Now I’ll walk past, won’t even recognize her
Please, would you help me crossing the Maidan

Please, would you help me crossing the Maidan
With pain, regrets and love, still not forgotten
Here I’ve been brave, and here I have been rotten 5 sounds too much like passive and therefore weird, but whatever
Please, would you help me crossing the Maidan

Please, would you help me crossing the Maidan
The drunken clouds, they seem to touch my arm 6Adding meaning that was not there, but “Maidan” is hard to rhyme with anything. I also can see something like “Where drunken clouds are floating in the trees”
Now it’s my son who sings on the Maidan
Please, would you help me crossing the Maidan 7 Four identical rhymes – it’s a feature! increasing the DRAMA and stuff

Please, help…” The Maidan took him in
and led him by the hand, and he kept walking
As he fell dead, right in the Maidan center
Not knowing there was no field anymore

“My goal is not to wake up at 40 with the bitter realization that I’ve wasted my life in a job I hate because I was forced to decide on a career in my teens” (c) самый гениальный мультик в истории человечества.

It all started when I was looking into options for one-hand typing, simply because it seemed like a pretty interesting thing to learn. (I love the feeling of the brain rewiring, haha.)

I stumbled upon this blog post by Randall Munroe about his Mirrorboard layout.

The key moment was when I realized that the brain command I use to type the letter ‘e’ is very similar to the one I use to type ‘i’. I found that if I held my right hand away from the keyboard and tried to type “the kitten parked the hovercraft”, it came out “tge dettev qarded gte gwvercraft” — I was doing the same motions with my left hand that I’d normally do with my right.

Mirrorboard is a keyboard layout that lets you type simple things on a QWERTY keyboard with only the left hand. It works by mirroring the layout between the left and right hands when you press caps lock. “asdf” becomes “;lkj” — the entire keyboard is reflected. To press a key on the right side of the board, you hold caps-lock with your pinky and then press the corresponding key on the left side.

Which is actually really fascinating and true.

After Googling around, I did not find any Dvorak version of the keyboard layout, so I decided to make one. Learning quite a lot about xkb and Linux’s handling of keystrokes in the process.

Another reason to change it a bit was because I use a pretty complex keyboard setup, with dvorak+Russian+Ukrainian, a compose key, and multiple remapped keys on my keyboard, and I wanted to integrate left-hand typing seamlessly in my workflow.

Changes made from the original Mirrorboard layout:

Made it Dvorak-friendly

Left-alt is used as modifier key, instead of Caps. (Which is remapped as Ctrl on my keyboard).

Return is Modifier+Tilde

Modifier+Tab is “/”

Modifier key is a Latch-style key instead of Shift-style key. (Basically, the difference between the two is that Shift-style keys work only when pressed together with the key that’s being modified, while Latch-style keys may be pressed before the key, or at the same time, or twice to “Lock” it until the next time you press it; Here’s an excellent explanation)

Adapted it to contain only the modified keys, so it can be put in /usr/share/X11/xkb/symbols/our_dvorak_mapping and later used as just another keyboard layout, say, setxkbmap -option 'grp:rshift_toggle, compose:rctrl' dvorak,sh-mirror3,ru,ua (right shift to change keyboard layout, right Ctrl as compose key)

Either just setxkbmap sh-mirror3 or integrate it in whatever you are using (e.g. setxkbmap -option 'grp:rshift_toggle, compose:rctrl' dvorak,sh-mirror3,ru,ua)

In case you want to edit it, copy it every time to a new name. The layout gets cached to the DE, and for it to read the new changes you would have to reload X, unless it’s a new file. (That’s why sh-mirror3; same number of tries as it took this person I learned this fact from). Or just during editing do xkbcomp mirrorboard.xkb $DISPLAY 2>/dev/null as recommended in the original post, maybe removing the last part to see any errors.

Then I did a couple of changes to my i3, cvim and keynav configs, to make them easier to use with just the left hand.

keynavrc

Keynav is an excellent little program to avoid using the mouse. I divide the screen in 16 areas, and decided to move the lower ones to my left hand, used with shift. Relevant fragment is:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

#First two rows of the screen areas

apostrophe cell-select1

comma cell-select5

period cell-select9

pcell-select13

acell-select2

ocell-select6

ecell-select10

ucell-select14

# Third and fourth row

gcell-select3

ccell-select7

rcell-select11

lcell-select15

hcell-select4

tcell-select8

ncell-select12

scell-select16

#Third and fourth row using shift and left-hand keys

shift+apostrophe cell-select3

shift+comma cell-select7

shift+period cell-select11

shift+pcell-select15

shift+acell-select4

shift+ocell-select8

shift+ecell-select12

shift+ucell-select16

On my keynav 0.20170124.0 the areas seem to be numbered vertically, not horizontally as mentioned on the page linked above.

All of this is definitely a work in progress, but it was really interesting.

Current left-hand typing speed is 12WPM, compared to my usual 80, I wanna see how and if it will improve. It’s really not about actual use, but because it seems something cool to do. Something like shorthand-writing, which I’ve almost learned. I wonder what comes next. Dozenal counting, perhaps?

“You were handsome!” “You were pretty
Queen of New York City”
When the band finished playing
They howled out for more
Sinatra was swinging
All the drunks, they were singing
We kissed on a corner
Then danced through the night

Make it check for bad characters (think “|”, which mediawiki doesn’t like in names and parameters, and everything else here: https://www.mediawiki.org/wiki/Manual:Page_title; make it do something for empty titles, so I don’t get redirected to the main page; put together all of this and upload it to github?

The final bookmarklet looks like this:

1

javascript:varlines='';varlines=$('#wpTextbox1').val().split('\n');for(i=0;i<7;i++){if(typeof lines[i]=='undefined'){lines[i]='';}}if(!ValidURL(lines[0])){alert(lines[0]+" doesn't look like a valid URL.")};if(lines[1]==''){lines[1]=lines[0]};if(lines[2]==''){lines[2]='5'};if(lines[3]==''){lines[3]='5'};if(parseInt(lines[2])>10||parseInt(lines[2])<0||isNaN(lines[2])){alert(lines[2]+'is not a valid value, setting to default 5');lines[2]='5';}if(parseInt(lines[3])>10||parseInt(lines[3])<0||isNaN(lines[3])){alert(lines[3]+'is not a valid value, setting to default 5');lines[3]='5';}varkeywords="\n{{#set:\n";keywords+="k=";keywords+=lines[5];keywords+="\n|+sep=, }}\n";varcategories="\n";for(i=0;i<lines.length-7;i++){categories+="[[Category: ";categories+=lines[i+7];categories+="]]\n";}vartext="{{B|\n"+lines[0]+"\n|"+lines[1]+"\n|"+lines[2]+"\n|"+lines[3];if(lines[4]!='')text+="\n|"+lines[4];text+="\n}}";text+=keywords;text+=categories;varfield=document.getElementById('wpTextbox1');vartextArray=field.value.split("\n");textArray.splice(0,lines.length);textArray[0]=text;field.value=textArray.join("\n");functionValidURL(str){varpattern=newRegExp('^(https?:\\/\\/)?'+'((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.?)+[a-z]{2,}|'+'((\\d{1,3}\\.){3}\\d{1,3}))'+'(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*'+'(\\?[;&a-z\\d%_.~+=-]*)?'+'(\\#[-a-z\\d_]*)?$','i');returnpattern.test(str);}

Unrelated to the above:

Apparently, after N years of studying programming and tweaking/optimizing whatever incarnation of my workspace, I’m getting it. Like, you can really solve your own problems by writing your own code?! Wow!

What happens next? I’m gonna go around writing extensions and stuff? How was the quote: “Be a man, write your own drivers!”

Regardless, this small and dead-simple bookmarklet that solves my own problems has done much more for my motivation than anything else I’ve ever tried in the last couple of years.

Here I’ll try to document my current setup for links management, which is slowly starting to take form.

Как мы пришли к такой жизни

Since the social bookmarking site Delicious (old links page) is seriously falling apart (which is very sad, I liked it almost as much as I liked Google Reader) I started looking for other alternatives. For some time, I used WordPress LinkLibrary plugin until I felt the hard category system lacked flexibility (you can see on the “Links” page of this blog how cluttered and repetitive it is), I needed tags and more ways to organize the links and, possibly, the relationships between them.

As for the existing social bookmarking services, for example http://pinboard.in or http://historio.us/, I did not want to pay and wanted control of my data (thank God the export feature in Delicious worked more often than not, but I don’t want to risk it anymore).

As for the need to “share” it, I want to have access to it from various places and, since there’s nothing private, putting it in the cloud and putting a password on it sounds like an unneeded layer of complication. Lastly — who knows — maybe someone will actually get some use out of it.

Semantic Mediawiki

Mediawiki is the software Wikipedia runs on. Semantic Mediawiki is an open-source extension for it that adds the ability to store and query data on a whole another level.

Traditionally, Mediawiki allows the pages to link to each other, but the exact nature of the connection is not clear, and you can’t use the connections much. Semantic Mediawiki allows to define additional data for every page, and allows to define relationships between pages. The data “Benjamin Franklin was born in the USA in 1706” suddenly becomes searchable, for example as “Give me the people born in America before 1800” and “Give me the list of countries where people named Ben were born”. A link “Benjamin Franklin -> Philadelphia” becomes “Benjamin Franklin was (BORN IN) Philadelphia”.

This is awesome.

After looking at it, I understood that I have immense power in my hands, and that I have no idea how to use it. As in, how to create an architecture that was both meaningful and easy to adhere to.

Seeing all this, I thought it would make sense to upgrade my “Link database” to something much more interconnected and useful, a personal knowledge management system.

The minimized variant of the above now sits nice in my bookmarks bar, and is bound to a keypress in cvim. So I can fill just the URI, and it sets everything else to some default values and adds the Mediawiki template formatting.

Making a bookmarklet which populates automatically most of the fields, like my old Delicious bookmarklet (sigh.)

Searching the wiki

The search in Semantic Mediawiki is explained pretty well here. Now I can do neat things like “Give me the pages in the Category ‘To read’ with complexity < 4”. And lastly, categories can be inside other categories. If X is in category A, which is a subcategory of B, it still shows up in searches for category B. (example) Pretty nice!

Knowledge Management

Things I want to learn or will probably need pretty often will have their own pages, like the Formulating Knowledge page. Simply because interacting with the material always helps much more than just reading it. Also I like that it will be represented in a way relevant for me, without unnecessary data and with additional material I think should be there.

For the link pages, there will be the link + very short summary (it has been working pretty well) + a couple of thoughts about it, + maybe relevant data or links to other pages.

Why?

Warum einfach, wenn es auch kompliziert geht? (A nice German phrase about avoiding the unbearable simplicity of being: “Why simple, when it can be complicated as well?”)

On a serious note, I don’t have any doubts that in the long run I’ll be thankful for this system.

Firstly, I control all of this data. Feels good. Take that, capitalist ad-ridden surveillance corporations!

Secondly, working with a lot of information has always been something I do often and enjoy immensely, and it would make sense to start accumulating everything in one place. Every day I stumble upon a lot of material on the Internet, of very different nature, and with not-obvious connections between them. I have more interests than I can count.

Organizing everything like this so far looks to me the best alternative, and I’m reasonably certain it will work out. There’s a lot that can be improved, and I think in a couple of moths it will morph into something awesome.

Finding ways to use all the accumulated data is a topic for another day.

“To put it mildly, I didn’t do very well.I, in fact, graduated in the part of my law school classthat made the top 90% possible.”

“The key is to overcome what’s called functional fixedness.You look at that box and you see it only as a receptacle for the tacks.But it can also have this other function,as a platform for the candle.The candle problem.”

External motivation works only for simple left-brain tasks; it’s counterproductive for tasks requiring lateral thinking. (“I’m going to time you to establish norms” vs “If you’re the fastest we’re testing here today, you get $20”)

Carrots and sticks work mostly for easily outsourceable jobs

“reward actually narrows our focusand restricts our possibility.”

“Think about your own work.Are the problems that you face,or even the problems we’ve been talking about here,do they have a clear set of rules,and a single solution?No. The rules are mystifying.The solution, if it exists at all,is surprising and not obvious.Everybody in this room is dealing with their own version of the candle problem.”

“It makes me crazy.And here’s the thing.This is not a feeling.Okay? I’m a lawyer; I don’t believe in feelings.This is not a philosophy.I’m an American; I don’t believe in philosophy.”

“autonomy, mastery and purpose.Autonomy: the urge to direct our own lives.Mastery: the desire to get better and better at something that matters.Purpose: the yearning to do what we doin the service of something larger than ourselves.These are the building blocks of an entirely new operating systemfor our businesses.”

Those 20th century rewards,those motivators we think are a natural part of business,do work, but only in a surprisingly narrow band of circumstances.

Those if-then rewards often destroy creativity.

Three: The secret to high performance isn’t rewards and punishments,but that unseen intrinsic drive–the drive to do things for their own sake.The drive to do things cause they matter.