November 2013

11/30/2013 21:52:36

Convert TextExpander Snippets to iOS/OS X Text Shortcuts

TextExpander Snippets to iOS/OS X Text Shortcuts

Here is something I’ve been working on for quite a while now. I first had the idea for this when I went to Vienna. I was annoyed that Apple still didn’t allow TextExpander to do what I love it to do. Three weeks ago it looked bad for TextExpander already, now, a couple of weeks later, it looks even worse.

Since Mavericks, Text Shortcuts (System Preferences → Keyboard → Text) sync with iOS devices. I started thinking how to automate adding new shortcuts by script. Scripting the UI is, obviously and technically, my least favorite option, but it’s what I ended up doing.

If you are interested in the technical difficulties that I had to overcome, which make this script work the way it does, read on. Otherwise head to the end to download.

How OS X Text Shortcuts Work

When a new Text Shortcut gets added in the System Preference pane Keyboard → Text, OS X does a couple of things.

First it saves a “receipt” of this addition/removal to ~/Library/Mobile Documents/com~apple~TextInput/ in there are a couple of folders. Most important are those with your username. Open that folder and you see UserDictionary with a subfolder. Select the ones with “~” in their name.

Every time you add or remove a new shortcut a zipped plist will be saved here, containing an Epoch timestamp, the shortcut and the phrase (as Apple calls expansions). Some other data is in the plist as well, but the important bits are the ones I just described.

The other important folder is in ~/Library/Dictionaries/CoreDataUbiquitySupport. This folder looks similar. It contains two folders, somewhere you will find a UserDictionary.db file. This is a SQLite database.

When a new shortcut gets added, a new row will be created here. Again Epoch timestamp, shortcut, and phrase are the important pieces.

What Does Not Work

My first guess was to add new “receipt” files to Mobile Documents. I was hoping that OS X would realize there’s a new file, read it and add it to OS X Text Shortcuts, and that this would also transfer new shortcuts to an iOS device. It does not.
Adding new files here with a similar structure does not update the System Preference pane Table View, nor does it make an iOS device recognize the addition.

I started tinkering with SQLite then. The SQLite database in Dictionaries is only used to feed the Table View displayed in System Preferences. Add new rows here with a similar structure, restart System Preferences, and you will see the new shortcut. Editing the database files does not trigger iCloud to sync shortcuts.

At this point I was pretty disappointed and took my least favorite route, UI scripting. I know it’s hacky, I know it’s dirty, I know all that, but scripting the UI lead to a working solution.
Maybe looking a bit more into Mobile Documents would eventually have resulted in a better solution. I weighed the time it would take me to figure this out against the time it takes me to make a first running version. I prefer things to be done.

How This Script Works

PLEASE READ THIS, IT IS IMPORTANT! ALL YOUR EXISTING SHORTCUTS WILL GO POOF!

  1. Open System Preferences → Keyboard → Text
  2. Click the Table View, select all, press backspace. This deletes all existing shortcuts and takes a moment or two.
  3. Turn off TextExpander text expansion. This is important. Otherwise when the script types the phrase, TextExpander would expand the abbreviation.
  4. It will then compile a list of all your TextExpander snippets.
  5. The script will then click +, type out the abbreviation, ⇥ to the next cell, paste the expansion from the clipboard, press return.
  6. After it has completed typing all shortcuts, TextExpander text expansion will be turned back on.

A few things to note:

  1. As the script automates the UI, just sit and watch. It takes about 4:40 minutes to type in about 300 snippets.
  2. The clipboard is used, because this way the expansion can have multiple lines.
  3. This script is smart enough not to process any dynamic snippets. Dynamic snippets use date calculations, Fill-Ins, and any script snippets.
  4. It takes a while for the list of snippets to be compiled. If AppleScript Editor says “Running…” at the bottom, the script is still running.
  5. If you hear an error beep you may have luck running the script again. Sorry this happens sometimes, I couldn’t figure out why.
  6. Set all snippet groups that you don’t want to be added in disallowedGroups. The name must match the snippet group’s name.

If you want to know how many snippets you have, comment out the part where the script starts adding all Text Shortcuts. There is a line

log "Count of abbreviationList: " & (count of abbreviationList)

After this insert (*, and *) way at the end.

Download

GitHub

11/21/2013 20:42:14

Want a sneaky peek at MindNode 3?

Coming (very) soon!

Original

11/19/2013 23:26:40

ScreenChamp Finalist 2013: GarageBuy 3 Trailer

One of my videos got into the ScreenChamp finals. Like this video on YouTube so I can win the People’s Choice Award.

Thanks to everyone who clicks the like!

11/18/2013 19:30:36

How to solve the Rubik’s Cube - Part 1 (by MathMeeting)

Watch the other four parts, too. 

11/17/2013 19:30:00

My Hyperactive Brain - Two Year Aftermath

This is a follow-up article on a piece I wrote almost two years ago on my hyperactivity disorder. As you can guess things have changed quite a lot since then.

After I got diagnosed with hyperactivity, I learned how to meditate. I still call it that way, because it makes it easier for people to understand what I’m doing, when I hide in the closet for 15 minutes. What I really do is known as PMR, progressive muscle relaxation. It is a way to relax one’s body through flexion and relaxation of muslce groups. Science shows it’s quite effective on people with hyperactivity. I can tell from my own experience that this is true. I still “meditate” about once daily. Though, surprisingly, not on weekends. I don’t know why, but for some reason I prefer not to meditate on weekends. I call it meditation, because all the benefits commonly known from “regular” meditation, I get from PMR as well. The quieting of thoughts, the transcendency, the ability to isolate thoughts and feelings, etc.

Since I started my journey into becoming a calmer self, I also learned a lot about spirituality, Buddhism, forgiving, our nervous system, muscles, and many other things going along those lines. My (back then not) ex-girlfriend started a career as yoga teacher. That was one of the things that got me into spirituality in the first place. I’m still very glad I came across Fully Present. This was one of the best reads I ever had on this topic, mainly because it is written from the scientists eye, analyzing the science behind meditation and spiritualism. Recently I met a new friend. We were eating out and she told me she thought that I seemed to radiate a certain kind of calmness. “Calm” wasn’t a term anybody would have used to refer to me some time ago. It shows how long a way I have come. I was always, and luckily still am, a very energetic person. That’s just something you get for free by being hyperactive. You are very upbeat, your mind goes quick, and your body wants to move all the time. I found that balance is absolute key to calmness and being quiet.
It is because I allow my body to perform (sort of) intensive workout, it is because I allow myself to freak out, it is because I allow my heart to beat, it is because I allow myself to have emotions, that I am able to be slow, calm, and relaxed, when I need to. See, I wasn’t like this when I started out, I decided for it. I still need to decide for it, every single day.

What I learned from PMR is relaxing groups of muscles at will. The way PMR is performed: you flex, say, your forearm, you concentrate on that flexion, then you let go, and feel into the relaxation. If you do this a certain time, you suddenly feel where muscles are tight. Again, when some time passes after that, your can turn off tight muscles from your head. When I feel a cramp or something like that now, I go “let go” in my head and the muscle relaxes. It is mere exercise that allows me to do that. There’s no magic formula, just pure doing and doing. When I sit in front of a beautiful woman, I go: “stay calm, relax”, in my head, and my body does what it has been trained to do. It is just execution, execution, execution, but my head needs to set the trigger. I need to be aware of the situation, I need to be there when I want to be that way. The way hyperactivity works is, is it pulls you away, constantly, into the rabbit hole. I need to realize: “Am I still relaxed or is my body starting to go too quick? If yes, what can I do about it right now?” This kind of thinking has helped me in many ways, not just for my own safekeeping. I feel situations that I’m not aware of. I feel where I am distracted and think of other things. The barrier where I am able to make a conscious decision, to be aware, has lowered. The problem is I suddenly also feel all the situations that I am not aware. Things that are automated. Sad sometimes. Think of the last time you said “love you” to your favorite person, and just said it because that’s what you did for the last couple of years. What if that person suddenly dies. Wouldn’t you want that last moment you saw them to be special? That’s what awareness does to you. Cruel, in a way.

What also helped was having strict rules about what can be and what can’t. Planning, planning, planning. I was a planner ever since I got out of uni, almost 8 years ago, but planning has become a tool that I can use to prepare my body for moments where it can do its things, and when I need to have control over it. It also helps me to structure things. I am sometimes worried about the amount of stuff I plan and the rigidity of planning. But it is that rigidity that helps me to go into automation mode. I need to have this structure, it needs to be strict, otherwise I couldn’t perform so well. I don’t do this all the time, because as I wrote earlier, balance is absolute key. Where structure is, there is chaos. I have days that I don’t plan at all and I preasure these days just as much as those that are planned. I set priorities and areas of focus, that’s what gets me started. Planning is key to keep balance. I learned after my break-up how much of our relationship was part of my balance. I needed some time to figure out how to keep balance again on my own.

A word on drugs. I am still against taking drugs. When I met my coach back then, he said: “Take the drugs, that’s the easy way out, but you’d probably have to take the drugs for the rest of your life. The second option would be to work on the root causes. This takes more time and effort, but you wouldn’t have to (buy and) take drugs.” My answer is obvious at this point. What he didn’t say was that I would have to take a different “drug” for the rest of my life, every day (apparently not on weekends though). I prefer to take this drug, because this journey has given me so much. There’s an entirely different way of thinking about things that I haven’t considered before, but are now part of my reality. Spirituality has given me the opportunity to be my own therapist, it has given me the ability to be here when I want to, it allows me to forgive myself, and others. But, again, I also gained the ability to realize all the moments I wasn’t there, I didn’t forgive, I hurt myself. If I’d take the drugs, I wouldn’t have had this journey. I would, possibly, still be angry about myself, how stupid I am to do certain things, probably still be that person I was back then, in a more evolved form. But I didn’t go that way. Luck? Awareness? Stupidity? Who knows. It’s just not part of what I am today.

What I also learned from all of this is why certain things in my life are just the way they are. I always enjoyed fast, mostly aggressive, electronic music. I also enjoyed an unhealthy amount of skate punk in my early 20’s. The bestest band of all time still is Millencolin1. I think my body reacts to this music, and therefore I, in my brain, enjoy this music too. Fast rhythms, that sort of thing turns me on. This also goes in line with the opinion that our nervous system is part of our intelligence. Most humans think of intelligence as something that is in our head2. But we are human. Our body is part of us. Our body is intelligent on its own, we just don’t “think” of things it does actively. There’s an entire “thing” attached to our head that does amazing things, and we don’t think it’s contributing to our whole-self being. Mind and body are the same thing.
I enjoy working fast, too. I couldn’t do it all the time though, if I wouldn’t take regular breaks. I’d burn out too quickly. My body is human after all. Though my body has a special ability to have a higher energy level, that doesn’t mean I can use my body “more”. I’d use up my body, I’d hurt myself.

Sport. I started working out about 10 years ago when I moved out of my parent’s house and into my own room, to study in Munich. First at home, to keep balance from sitting so much. It quickly evolved into riding my bike and going to the gym, where I learned running. When I started, I realized soon that I want this to become part of my life. It felt good. Now 10 years after, it has become part of my life. I read many books and articles on fitness, muscles, the nervous system, etc.. A trainer once told me at a gym I was back in 2006 (already in Stuttgart) that many people who go to the gym, get a certain workout plan, and then just stick with it until they cancel their membership. He said that a new workout plan should be made about every 3 months. So I began working with my various trainers every 3 months to alternate the route I was taking. In my current gym, member since 2011, my trainer and I recently had a discussion where he said: “Why do you even come to me anymore? You know all this stuff pretty darn well. Even if you don’t, then you can just ask any random trainer in this studio. We shouldn’t meet to discuss what exercises you do, maybe, really maybe, the route you take. The rest you can do by yourself.” I thought about it and he was right. I can do this by myself. I got into calisthenics/functional training in 2010, back then it didn’t have a fancy name (or even an entire industry behind it). I remembered that time and thought, let’s cancel my gym membership for a month and see how well I do on my own, with no equipment at all. It was a great month, but I missed going somewhere to do my exercises. I am now back in the gym, mixing calisthenics with weight training. I will continue going by bike or by foot anywhere I can, I will continue running once weekly.

Ten years ago I was a different person. Who would have known I’d become this? I never thought I would, but here I am.

If you have any questions on hyperactivity, exercising, relaxation, meditation, anything mentioned here, feel free to ask in the comments or catch me on Twitter.


  1. Pepper 

  2. "What happens is when children grow up we start to progressively educate them from the waist up. And then we focus on their head." 

11/16/2013 19:30:27

Blocked on Weibo: What Gets Suppressed…

Interesting talk from Jason Q. Ng. Also have a look at his Tumblr.

11/10/2013 23:51:33

Version 2.1.1 of Markdown for Keyboard Maestro now available

Version 2.1.1 of Markdown for Keyboard Maestro is now available!

As the version number indicates this is just a minor update. There’s nothing majorly new, just one small bug fix to the Header macro. I had a typo which prevented this macro from working.

Download

11/09/2013 19:30:18

OS X Tip: Custom Folder Sorting

OS X Mavericks added some features to “labels”. Previously files and folders were only able to have a color label, now these labels can also have tags. Color labels are now essentially tags with a certain name which also can have a color.

Tags are great, and if you haven’t converted from OpenMeta yet, please do so.

Mavericks also adds the ability to Sort by Tags from every window. This means we can (ab)use this feature to get custom sorting for files.
I have a folder called Watch Later, especially useful when traveling. Let’s be honest, when you go on a travel, you put every single possible movie you may want to watch on your disk so that you can watch everything offline, because when will you have a decent enough connection to watch, right?

The key here is: what priority do you give to watching movies?

Set up some tags 1, 2, and 3, then choose Tags from the Arrange By menu.

11/08/2013 19:30:29

Living in a Surveillance State

Mikko Hypponen at TEDxBrussels

11/06/2013 19:30:31

Think About It - Decision Assistant Now Available

A couple of weeks ago a befriended developer sent me a beta app and asked that I take a look at it. The app is called Think About It by Bone Desert Software Limited, a decision assistant, which is now publicly available.

I now have three apps on my device(s) to help me make decisions. Sometimes I’m torn between two options for something easy like “do I go to the gym today or tomorrow?” These kind of decisions have no effect on my life, because it doesn’t matter if I go today or tomorrow, all it matters is that I go. Decide Now! helps in this instance. I also have Decision App, which is handy for more elaborate decisions. The app has some of the most useful decision matrices included. The only downside here is that the app doesn’t really improve the decision making process.

This is where Think About It comes in. TAI allows you to create a Decision and add Criteria that must be met to determine the most suitable solution. Rating these Criteria allows the app to calculate a result automatically. Criteria can be something measurable, like the price of an app, or something less defined like personal preference or a feeling.

Once multiple Criteria have been created, a new option shows up: “How important is this?” Here a user can rate the importance between Criteria. For instance, in the example of a decision whether to buy an app or a competing one, price may be more important than UI design. Think About It reports any inconsistent rating. These inconsistencies have to be resolved before Think About It is able to make a choice. The app also assists in the process of highlighting where the inconsistency is likely to be.

When all Criteria have been added, it is time to add Choices. Choices are basically the alternative outcomes you are considering. In the above example, the iPhone apps themselves. The last step is to measure how well a choice performs against the other choices for each Criteria. When everything is entered, the app will present a calculated, unemotional, winning result based on true facts.

I like the idea behind Think About It. If the computer can help me make better decisions, it should. Think About It is only $4.99 on the App Store.

11/05/2013 19:30:29

Lookup Term in Terminology From Your Mac Using Keyboard Maestro

I like my dictionary. My dictionary helps me to find eloquent words to test Keyboard Maestro macros with, like “ho chi minh”.

Now obviously using the term.ly bookmarklet would be way to easy, plus we would lose the benefit of using a highly sophisticated iOS app that supports a great URL scheme.

The macro that I came up with was partially inspired by Phillip Grueneich’s “Exporting Actions to Drafts…from your Mac”. It uses Pushover to push a message that contains a x-callback link to Terminology.

You need to create an app on Pushover for this. Don’t forget to assign user and API key in the Shell script action, then you’re good to go.
I left the other URL parameters in the script so that you can see what other options you have on Pushover.

Download: https://app.box.com/s/njaep37ehvc196elu9ze

11/03/2013 19:30:10

Naming Files and Don’t Giving a Thing

I found some old files today. I used to include the date a file has been created within the name. Good old times.

The rabbit hole: What’s a good file naming convention?

Obviously there had to be a better way, right? Right? Oh was I wrong. Read the comments (from 2006!) and have a good laugh. I don’t know about you, but when I name my files I just don’t give a fuck.

The general rule is simple: as long as the system supports certain characters, I see no reason to avoid certain characters.

I spend quite some time working with editors and designers. I giggle the first time I see design_1.psd popping up in Growl. I set some time aside for these folks and explain the advantages, but also the disadvantages of such file naming conventions. I explain that they can use whatever they feel like, because the computers we use have Unicode. As long as it’s useful there’s no reason to castrate file names in an unreadable manner.

Heck, I even use Emoji’s for filenames sometimes, just because I feel like it and I know that I can. And so should you.

Keep that in mind next time. YYYYMMDD

11/02/2013 19:30:28

Maybe try an experiment and just be alone? Forgot how it is done?

How To Be Alone (by Andrea Dorfman)