XML vs. JSON

JSON advantages

  • Shorter syntax when parent nodes have identifiers that are sufficiently long.
  • Specialized syntax that suggests where booleans, lists and numbers are more likely to be appropriate
  • Less complicated escaping rules. Compare " and & with "\"" and "\\"

XML advantages

  • Native newline support for text childs
  • Special escape syntax for code containing charactesr which conflict with other parts of the syntax(CDATA)

Things I like and don’t about vim

I use vim. Here are some things I like about it and don’t

Like:

1. Default key mappings.

I feel at home(pun intended) with navigation keys laid out horizontally in the center of the keyboard. This might be just because the arrow keys are a bit unergonomically laid out on most keyboards.

2. Terminal support.

As of this year of writing. Having GUI as well as terminal support is still handy as remote desktop is not always responsive enough.

3. Lightweight.  Disregarding IDE’s, editors don’t usually take too long to start up or use too much memory these days. But I can still install vim pretty quick and reliably on a host of operating systems. Can’t say that about notepad++.

4. Internal documentation.

The ease at which you can search for documentation terms inside the application is something I would like to see elsewhere.

5. filename completion

Vim comes with a function to complete by file paths which I like.

6. Free

As in beer and freedom!

7. Opens large files

Try opening a gigabyte file in notepad. It won’t work. Vim has one of the best large file supports I’ve found.

8. Scripting Language execution.

The scripting language is built in to the editor, which is a good thing so i don’t have to obtain a compiler to program it.

Dislike:

1. The caret.

In GUI mode, the caret is still a block which is uncomfortable to me for reasons such as being able to read the character underneath it. It also seems harder to tell which character I’m on.

2. The scriptring language sytnax.

In vim local variables are marked with l: ,function variables a:. This is quite an uncommon way of doing something that is often handled better in other language designs. It reminds me of Hungarian notation which I dislike.

3. Background files in the same directory you are editing in.

I have gotten out of trouble a few times by using some of the background files in vim, however they are largly obtrusive and made redundant by versioning systems like git.

4. No Full terminal split.

In emacs you can split a full terminal. The reason I want this is because my ability to use terminal session apps like tmux still isn’t good enough.

5. Replacing the current word

No short default way to replace cursor word with current buffer.

6. System Paste buffer shortcut

The default shortcut to copy to system clipboard is too many Characters. Also, I can’t remember when I’ve last benefited from having something copy only into the editors paste buffer.

7. Session restoring.

I like how notepad++ remembers which tabs I’ve opened by default.

8. Inferior text based GUI directory browser.

I like how in other GUI editors such as with a plugin for notepad++ or textmate, you can get context menus and an individually font sized directory tree.

Benefits of browser anonymous mode

When you click the “incognito” mode in chrome or the “private” mode in firefox you can feel as anonymous as someone in disguise. This has many benefits such as:

  • Stopping others from viewing your history when you are “Away From Keyboard”
  • Good for using a web site when you are already logged as another user. This is handy for when you have multiple accounts or need to do some cross user testing.
  • Don’t have to worry about signing out of apps before closing if you are using someone else’s computer. Effectively makes it a Kiosk Mode.

What’s wrong with Unix

1. Command Line options

In unix, commands have parameters, but this is not standardized. Sometimes a parameter will be expressed as:

command -osomething
command -o something
command --o=something
command --opt something
command o something

There is no consistency. This should be standardized. CGI is a better alternative to this.

2. Command Line output

In unix, commands have outputs in columns, however, some columns contain spaces. since columns are seperated by spaces and not tabs, you have to count more spaces until you can extract the data you want. An example of an alternative to this is Windows powershell where commands output XML.

3. Filesystem Organisation

In unix. Files are divided by type not by application. This means executables are in /bin and config files in /etc etc (no pun intended).
This makes uninstallation and moving apps between servers almost impossible. Mac does this better as apps are contained in a single directory.