Installing a Custom External Keyboard Layout on Your Nexus 7 Android Using Ubuntu

1. Root Your Nexus 7

Instructions can be found here: http://itsfoss.com/root-nexus-7-2013-ubuntu-linux/
I have a 2012 Nexus, so instead of "CF-Auto-Root-flo-razor-nexus7.img" I needed "CF-Auto-Root-grouper-nakasi-nexus7.img"

An explanation for this is according to this post: http://forum.xda-developers.com/showthread.php?t=2444328
Device "flo" - Firmware "razor" - 2013 N7 WiFi-only
Device "deb" - Firmware "razorg" - 2013 N7 LTE
Device "grouper" - Firmware "nakasi" - 2012 N7 WiFi-only
Device "tilapia" - Firmware "nakasig" - 2012 N7 3G

2. Make Your Keyboard File

Some examples for a variety of layouts including Dvorak are here, my special thanks to these guys:

If you have time, download the Android source so you can check your .kl file/files with the "validatekeymaps" command:

3. Replace Your Generic.kl File

You need to replace your /system/usr/keylayout/Generic.kl with the file you made. I made mine based off of this post http://forum.xda-developers.com/showthread.php?t=1223020 and my original Generic.kl file. You also will need a program that allows you root access through the adb shell so that when you type "adb shell" then "su" in ubuntu you get root to you device. I use https://play.google.com/store/apps/details?id=eu.chainfire.supersu&hl=en

Here's my .kl file: http://themeatyard.blogspot.com/2014/11/dvorak-keyboard-layout-for-nexus-7.html
To replace, run following commands in Ubuntu terminal, the first one saves a backup:

adb pull /system/usr/keylayout/Generic.kl
adb push "your .kl file" /sdcard
adb shell
mount -ro remount,rw /system
cd /sdcard
cp "your .kl file" /system/usr/keylayout
cd /system/usr/keylayout
mv "your .kl file" Generic.kl
chmod 644 Generic.kl


Dvorak External Keyboard Layout for Nexus 7

This is based off of this post http://forum.xda-developers.com/showthread.php?t=1223020 and my Generic.kl file.

Just replace your /system/usr/keylayout/Generic.kl with this file:

# Copyright (C) 2010 The Android Open Source Project
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#      http://www.apache.org/licenses/LICENSE-2.0
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# See the License for the specific language governing permissions and
# limitations under the License.

# Emulator keyboard layout #1.
# This file is no longer used as the platform's default keyboard layout.
# Refer to Generic.kl instead.

key 1     ESCAPE
key 2     1
key 3     2
key 4     3
key 5     4
key 6     5
key 7     6
key 8     7
key 9     8
key 10    9
key 11    0
key 14    DEL
key 15    TAB

key 16    APOSTROPHE 
key 17    COMMA 
key 18    PERIOD 
key 19    P
key 20    Y
key 21    F
key 22    G
key 23    C
key 24    R
key 25    L
key 26    SLASH 
key 27    EQUALS
key 28    ENTER
key 29    CTRL_LEFT

key 30    A
key 31    O 
key 32    E
key 33    U 
key 34    I 
key 35    D 
key 36    H 
key 37    T
key 38    N 
key 39    S 
key 40    MINUS
key 41    GRAVE
key 42    SHIFT_LEFT

key 44    SEMICOLON
key 45    Q
key 46    J
key 47    K
key 48    X
key 49    B
key 50    M
key 51    W
key 52    V
key 53    Z

key 12    LEFT_BRACKET 

key 54    SHIFT_RIGHT
key 56    ALT_LEFT
key 57    SPACE
key 58    CAPS_LOCK
key 59    F1
key 60    F2
key 61    F3
key 62    F4
key 63    F5
key 64    F6
key 65    F7
key 66    F8
key 67    F9
key 68    F10
key 69    NUM_LOCK
key 70    SCROLL_LOCK
key 71    NUMPAD_7
key 72    NUMPAD_8
key 73    NUMPAD_9
key 75    NUMPAD_4
key 76    NUMPAD_5
key 77    NUMPAD_6
key 78    NUMPAD_ADD
key 79    NUMPAD_1
key 80    NUMPAD_2
key 81    NUMPAD_3
key 82    NUMPAD_0
key 83    NUMPAD_DOT
# key 84 (undefined)
key 86    BACKSLASH
key 87    F11
key 88    F12
key 89    RO
# key 90 "KEY_KATAKANA"
# key 91 "KEY_HIRAGANA"
key 92    HENKAN
key 94    MUHENKAN
key 95    NUMPAD_COMMA
key 96    NUMPAD_ENTER
key 97    CTRL_RIGHT
key 99    SYSRQ
key 100   ALT_RIGHT
# key 101 "KEY_LINEFEED"
key 102   MOVE_HOME
key 103   DPAD_UP
key 104   PAGE_UP
key 105   DPAD_LEFT
key 106   DPAD_RIGHT
key 107   MOVE_END
key 108   DPAD_DOWN
key 109   PAGE_DOWN
key 110   INSERT
key 111   FORWARD_DEL
# key 112 "KEY_MACRO"
key 113   VOLUME_MUTE
key 114   VOLUME_DOWN
key 115   VOLUME_UP
key 116   POWER             WAKE
key 119   BREAK
# key 120 (undefined)
key 121   NUMPAD_COMMA
key 122   KANA
key 123   EISU
key 124   YEN
key 125   META_LEFT
key 126   META_RIGHT
key 127   MENU              WAKE_DROPPED
key 128   MEDIA_STOP
# key 129 "KEY_AGAIN"
# key 130 "KEY_PROPS"
# key 131 "KEY_UNDO"
# key 132 "KEY_FRONT"
# key 133 "KEY_COPY"
# key 134 "KEY_OPEN"
# key 135 "KEY_PASTE"
# key 136 "KEY_FIND"
# key 137 "KEY_CUT"
# key 138 "KEY_HELP"
key 139   MENU              WAKE_DROPPED
key 140   CALCULATOR
# key 141 "KEY_SETUP"
key 142   POWER             WAKE
key 143   POWER             WAKE
# key 144 "KEY_FILE"
# key 145 "KEY_SENDFILE"
# key 146 "KEY_DELETEFILE"
# key 147 "KEY_XFER"
# key 148 "KEY_PROG1"
# key 149 "KEY_PROG2"
key 150   EXPLORER
# key 151 "KEY_MSDOS"
key 152   POWER             WAKE
# key 153 "KEY_DIRECTION"
key 155   ENVELOPE
key 156   BOOKMARK
# key 157 "KEY_COMPUTER"
key 158   BACK              WAKE_DROPPED
key 159   FORWARD
key 160   MEDIA_CLOSE
key 161   MEDIA_EJECT
key 162   MEDIA_EJECT
key 163   MEDIA_NEXT
key 166   MEDIA_STOP
key 167   MEDIA_RECORD
key 168   MEDIA_REWIND
key 169   CALL
# key 170 "KEY_ISO"
key 171   MUSIC
key 172   HOME
# key 173 "KEY_REFRESH"
# key 174 "KEY_EXIT"
# key 175 "KEY_MOVE"
# key 176 "KEY_EDIT"
key 177   PAGE_UP
key 178   PAGE_DOWN
# key 181 "KEY_NEW"
# key 182 "KEY_REDO"
# key 183   F13
# key 184   F14
# key 185   F15
# key 186   F16
# key 187   F17
# key 188   F18
# key 189   F19
# key 190   F20
# key 191   F21
# key 192   F22
# key 193   F23
# key 194   F24
# key 195 (undefined)
# key 196 (undefined)
# key 197 (undefined)
# key 198 (undefined)
# key 199 (undefined)
key 200   MEDIA_PLAY
key 201   MEDIA_PAUSE
# key 202 "KEY_PROG3"
# key 203 "KEY_PROG4"
# key 204 (undefined)
# key 205 "KEY_SUSPEND"
# key 206 "KEY_CLOSE"
key 207   MEDIA_PLAY
# key 209 "KEY_BASSBOOST"
# key 210 "KEY_PRINT"
# key 211 "KEY_HP"
key 212   CAMERA
key 213   MUSIC
# key 214 "KEY_QUESTION"
key 215   ENVELOPE
# key 216 "KEY_CHAT"
key 217   SEARCH
# key 218 "KEY_CONNECT"
# key 219 "KEY_FINANCE"
# key 220 "KEY_SPORT"
# key 221 "KEY_SHOP"
# key 222 "KEY_ALTERASE"
# key 223 "KEY_CANCEL"

key 256   BUTTON_1
key 257   BUTTON_2
key 258   BUTTON_3
key 259   BUTTON_4
key 260   BUTTON_5
key 261   BUTTON_6
key 262   BUTTON_7
key 263   BUTTON_8
key 264   BUTTON_9
key 265   BUTTON_10
key 266   BUTTON_11
key 267   BUTTON_12
key 268   BUTTON_13
key 269   BUTTON_14
key 270   BUTTON_15
key 271   BUTTON_16

key 288   BUTTON_1
key 289   BUTTON_2
key 290   BUTTON_3
key 291   BUTTON_4
key 292   BUTTON_5
key 293   BUTTON_6
key 294   BUTTON_7
key 295   BUTTON_8
key 296   BUTTON_9
key 297   BUTTON_10
key 298   BUTTON_11
key 299   BUTTON_12
key 300   BUTTON_13
key 301   BUTTON_14
key 302   BUTTON_15
key 303   BUTTON_16

key 304   BUTTON_A
key 305   BUTTON_B
key 306   BUTTON_C
key 307   BUTTON_X
key 308   BUTTON_Y
key 309   BUTTON_Z
key 310   BUTTON_L1
key 311   BUTTON_R1
key 312   BUTTON_L2
key 313   BUTTON_R2
key 315   BUTTON_START
key 316   BUTTON_MODE

# key 352 "KEY_OK"
key 353   DPAD_CENTER
# key 354 "KEY_GOTO"
# key 355 "KEY_CLEAR"
# key 356 "KEY_POWER2"
# key 357 "KEY_OPTION"
# key 358 "KEY_INFO"
# key 359 "KEY_TIME"
# key 360 "KEY_VENDOR"
# key 361 "KEY_ARCHIVE"
key 362   GUIDE
# key 363 "KEY_CHANNEL"
# key 364 "KEY_FAVORITES"
# key 365 "KEY_EPG"
key 366   DVR
# key 367 "KEY_MHP"
# key 368 "KEY_LANGUAGE"
# key 369 "KEY_TITLE"
# key 370 "KEY_SUBTITLE"
# key 371 "KEY_ANGLE"
# key 372 "KEY_ZOOM"
# key 373 "KEY_MODE"
# key 374 "KEY_KEYBOARD"
# key 375 "KEY_SCREEN"
# key 376 "KEY_PC"
key 377   TV
# key 378 "KEY_TV2"
# key 379 "KEY_VCR"
# key 380 "KEY_VCR2"
# key 381 "KEY_SAT"
# key 382 "KEY_SAT2"
# key 383 "KEY_CD"
# key 384 "KEY_TAPE"
# key 385 "KEY_RADIO"
# key 386 "KEY_TUNER"
# key 387 "KEY_PLAYER"
# key 388 "KEY_TEXT"
# key 389 "KEY_DVD"
# key 390 "KEY_AUX"
# key 391 "KEY_MP3"
# key 392 "KEY_AUDIO"
# key 393 "KEY_VIDEO"
# key 394 "KEY_DIRECTORY"
# key 395 "KEY_LIST"
# key 396 "KEY_MEMO"
key 397   CALENDAR
# key 398 "KEY_RED"
# key 399 "KEY_GREEN"
# key 400 "KEY_YELLOW"
# key 401 "KEY_BLUE"
key 402   CHANNEL_UP
key 403   CHANNEL_DOWN
# key 404 "KEY_FIRST"
# key 405 "KEY_LAST"
# key 406 "KEY_AB"
# key 407 "KEY_NEXT"
# key 408 "KEY_RESTART"
# key 409 "KEY_SLOW"
# key 410 "KEY_SHUFFLE"
# key 411 "KEY_BREAK"
# key 412 "KEY_PREVIOUS"
# key 413 "KEY_DIGITS"
# key 414 "KEY_TEEN"
# key 415 "KEY_TWEN"

key 429   CONTACTS

# key 448 "KEY_DEL_EOL"
# key 449 "KEY_DEL_EOS"
# key 450 "KEY_INS_LINE"
# key 451 "KEY_DEL_LINE"

key 464   FUNCTION
key 465   ESCAPE            FUNCTION
key 466   F1                FUNCTION
key 467   F2                FUNCTION
key 468   F3                FUNCTION
key 469   F4                FUNCTION
key 470   F5                FUNCTION
key 471   F6                FUNCTION
key 472   F7                FUNCTION
key 473   F8                FUNCTION
key 474   F9                FUNCTION
key 475   F10               FUNCTION
key 476   F11               FUNCTION
key 477   F12               FUNCTION
key 478   1                 FUNCTION
key 479   2                 FUNCTION
key 480   D                 FUNCTION
key 481   E                 FUNCTION
key 482   F                 FUNCTION
key 483   S                 FUNCTION
key 484   B                 FUNCTION

# key 497 KEY_BRL_DOT1
# key 498 KEY_BRL_DOT2
# key 499 KEY_BRL_DOT3
# key 500 KEY_BRL_DOT4
# key 501 KEY_BRL_DOT5
# key 502 KEY_BRL_DOT6
# key 503 KEY_BRL_DOT7
# key 504 KEY_BRL_DOT8

# Keys defined by HID usages
key usage 0x0c006F BRIGHTNESS_UP
key usage 0x0c0070 BRIGHTNESS_DOWN

# Joystick and game controller axes.
# Axes that are not mapped will be assigned generic axis numbers by the input subsystem.
axis 0x00 X
axis 0x01 Y
axis 0x02 Z
axis 0x03 RX
axis 0x04 RY
axis 0x05 RZ
axis 0x06 THROTTLE
axis 0x07 RUDDER
axis 0x08 WHEEL
axis 0x09 GAS
axis 0x0a BRAKE
axis 0x10 HAT_X
axis 0x11 HAT_Y


The Importance of an iPhone above Your Life

No one gets hurt (except maybe the gunman and only a little) but watch the guy who gets the gun pointed at his face originally. Watch closely and you'll see that AS HE IS WRESTLING the gunman with his LEFT HAND ONLY he thinks his iPhone (or whatever it is) is important enough to stuff into his right pocket with his right hand:  http://www.theguardian.com/world/video/2013/dec/19/seattle-gunman-bus-passengers-cctv-video
My jaw almost fell off when I noticed this. I felt like some Marxist philosopher would pop out at the end and say something about commodity fetishism. (not sure if I used that term correctly but oh well)


Living Shadows

There's a common past-time (if one may call it that) of talking about shapes you see in clouds. I always thought it was funny that no one does the same with shapes they see in the forest at night. At least I did before one camping trip.

It was a trip into the remote woods of Canada where an isolated hot spring bubbled. It seemed like fate that we were going. At first no one was interested in traveling so far, but then there came the odd coincidences. Several of us had dreams of sitting in hot springs, and as we told each other we remarked at how the similar our dreams were. They weren't even very happy dreams; many of them had creepy endings, and like many successful bad ideas, the trip took place more because people continued to talk of the idea rather than people being for the idea itself. We were four friends and the drive up to the campground should have been long and happy, but as we came close to the secluded area the sickness of the woods became apparent. We saw large branches, broken, stripped, and gnawed on the ground, flayed out in odd patterns, like the remnants of a some violent ritual. The trees grew larger, and more twisted as we continued, giving glimpses of what might have been animal trails, except for the fact that they extended higher than what should have been natural; as if some furious grizzly bear had trundled upright as it tore its way through the foliage.

Then there were the eyes staring out of the night just meters ahead on the hill. The eyes belonged (so we thought) to a dark shape which refused to be illuminated by our headlights for the beams were too gently inclined to show the top of the hill with full force. Nevertheless, we inched our car forward trying to see the rest of the figure and watched as the eyes stared and bobbed slowly as if riding on an alien gait. I watched with both fear and fascination for I was oddly drawn to them. I thought it must have been curiosity at the time.

Finally the tension became too much and our driver lost nerve. He put the car in reverse and backed down the hill so quickly I feared that the dips in the old road would cause us to bounce out of control. It took some time for us to regain our nerves, but once we did we took a different route and finally found ourselves in the forest of our intent. There we timidly set up camp muttering to each other about possible explanations for the figure which served only to remind us of the eyes and their alien nature but no voiced their fear. As camping goes, if there is an unknown that frightens you, you can't admit it, and in a way, you sometimes really aren't afraid because it is a fearful fascination rather than a simple fear. And though this was clearly different, no one wanted to talk about it.

I had then woken up alone in the hot springs. I heard movement behind me and kept trying to turn around but couldn't. It was then that I felt the rush of inhuman breath on my back. Then I really did wake up, and realized it was a dream and that it was still night.

I now watch the shadows of trees flicker like ghosts through my tent in the moonlight, and lie on my back waiting as the minutes drip by like water from a leaky needle. There is no more sleep. The shadows, the pine scent, the cold, enclose upon me as if the forest is giving me a hateful hug to prevent escape.

I unzip the tent flap and slip outside, the wraith-like trees and shadows hover and flicker gently around me like a sorcerer's simulation. I step carefully out of our circle of tents into the woods. Despite the night's events I want to see the moon and I carry my backpack on my head to protect my glasses from the light drizzle of rain. There's a clearing nearby and I slowly make my way towards it walking as if the earth is sleeping and would be awakened with too sudden or too heavy a step. I hear a crack of wood and brush of leaves. There's a figure standing in front of me, in the bushes, maybe twenty yards away. My nerves, already tensed, give me an electric shock and I jump backwards and crouch by a tree.

The figure is too tall and abnormal to be human. I can see two long black stick-like arms jutting upwards towards the sky. I scream and run back into our group of tents, back into my circle of equally nervous and sleepless friends, back into an ensuing chaos. They yell at me, asking what has happened. "It's the walking thing we saw on the hill!" Some grab sticks as weapons and begin to bang them together and yell as others pile wood on our fire. There are rustlings coming from the clearing, but I can't discern the type. I then see a glow by the clearing and hear hideous screeching that is barely discernible above the racket we are making as we yell and bang our sticks at the shadows, trying to prove that we are too alive to die.

However, my attention is drawn to the glow, and through the dense shades of trees and mazes of sticks I see the flicker of flames and I stop and strain my ears at their source. The screechings we heard are human voices and I calm my friends and get them to approach the clearing slowly with some trepidation. Outside the foreign glow we stare at what looks like our mirror image of a minute past. It is another party of campers just as scared as we were, and we offer to camp together for safety.

Soon both our group's mistakes become apparent. My backpack's canteens had looked like eyes in the night and the abnormal figure I saw had been one of their campers. He was on a tree stump holding two sticks to the sky to frighten whatever creature I supposedly was. We laugh at human fears and share stories and finally sleep overtakes me again and as the sun rises I slip into an unnaturally deep stupor.

I awake in the darkness. I am standing in a cave, but not a natural cave. The rocks are two smooth. They are ornate and curved! Crafted! By who? The bubbling of water is nearby. The hot springs! But how did I get here? I look over a ledge and see lights in a massive spiral staircase of smooth rocks made in a subtle blend of natural cave with vast alien architecture descending into the earth. There are people walking downwards. They are walking in a rhythm. But before I can think of what this means I see the dark and tall creatures standing above them. Their bodies refuse to be lit. I would compare them to black holes, but these have no definite shape, not even the fading and bending of light around the event-horizon does these creature's shapes justice. And merely looking at their formless forms causes the skin to craw. They are like living shadows from the underworld, taking people back to their graves. They have invaded our dreams! They must have, ever since we went camping together we have been too cocky to admit our fear at the strange shapes in the forest, but our fascination with them continued, and drove us to get away from civilization. It was their plan all along! I see the people walking in rhythm like zombies, zombies of sleep, and remember dreams that led up to this. All the times where I couldn't see an adversary, when my eyes refused to perceive an object of my fears, it was them! And I suddenly know that soon they will come for me on my little ledge as they will come for the hundreds of others perched in confusion on ledges around this great dark cavern.


The Joys of the Arch Linux AUR (arch user repository)

Arch is a distribution of Linux I have started using recently. It tends to have a lot of very interesting and specialized software. These are just a few of the massive number of results I got for a search of the AUR for the keyword "brain", like so: "packer -Ss brain"

 aur/xmind 3.2.1-1 (332) Brainstorming and Mind Mapping Software

aur/defrag 0.08-1 (66) A braindead simple and filesystem agnostic defrag script

aur/brainparty 0.5-5 (45) Brain Party is a puzzle game made up of 36 minigames designed to push your brain to its limits by testing memory, logic, mathematics, reaction time and more

aur/bfc 1-3 (39) A minimalistic brainfuck compiler.

aur/awib 0.3-2 (25) A brainfuck compiler written in brainfuck, able to generate x86 linux binaries, C code, Ruby code, Go code and Tcl code.

 aur/autozen 2.1-3 (18) A binural brainwave generator. Cause the user to experience an altered state of consciousness. Wear headphones. Don't use if you suffer for any kind of epilepsy and use at your own risk!

aur/cryosleep 0.2-1 (7) The Cryosleep program generates changing noisewaves with a superimposed brainwave that are nice to listen to and vary over time

aur/dream-strobe 3-1 (17) Stroboscope implementation for GNU/Linux console. Also called 'Dream Machine' or 'Strobe'. Can be used to alternate state of consciousness by affecting brainwave frequencies. Use only at your own risk!

 aur/professor-fizzwizzle-1 1.02-1 (1) Professor Fizzwizzle is a fun, mind-expanding puzzle game, where you take control of the diminutive genius, Professor Fizzwizzle. You must help the professor use his brains and his gadgets to solve each exciting level.

 aur/neurolab 1.2.2-1 (1) Neurocognitive Linguistics Lab is an approach to linguistics which uses relational networks to model what the brain actually does when it handles language.

Continuing Posting

So there's been a lack of posts for a while. I'll try to post something every Sunday morning from now on. I started a secret blog with a different pen name, but I haven't been posting to that either... so I guess that isn't a good excuse.

However, I now plan to spend more time writing. The topics of both blogs are mostly the same, although the other one will probably be more focused on stories about people and events in my life. The names are already changed but posting there will be an extra form of security so no one can recognize themselves, or me for that matter, unless they randomly happen upon it. I know I flatter myself, there isn't much chance that my friends will start reading this blog, but I never can predict people.

I've also always had anxiety about writing, having the diverse group of friends I do, and because I have Asperger's syndrome I am constantly worried about not knowing how someone would take a piece of writing and offending them. The fear is mostly irrational, but at the same time you do have a better chance of offending someone if they know and care about you, rather than if you are faceless and can be dismissed as another minion of the world wide web trolls.

In addition, I sometimes post inappropriate or immature things, only to realize it later and get embarrassed. Sometimes I post completely reasonable things and later come to the conclusion that they are inappropriate and offensive. It then takes me a long time to get over it. I've also had problems with depression in the past which hasn't helped my judgement, but I've made a recovery recently. The other blog I have should provide an outlet for me to make my more daring posts while with this one, I'll play it slightly more safely. After this post should follow my first post to start off. It should be short.


Laptop snd-hda-intel no head phone audio fix for Arch


[joel@moo modprobe.d]$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Intel [HDA Intel], device 0: ALC269VB Analog [ALC269VB Analog]
Subdevices: 0/1
Subdevice #0: subdevice #0
card 0: Intel [HDA Intel], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0

The output above means that my audio is using card 0. This means I need to alias card 0 and slot 0. This is my modeprobe.conf:

# /etc/modprobe.d/modprobe.conf
#disable autoload of ipv6
alias net-pf-10 off

alias snd-card-0 snd-hda-intel
alias sound-slot-0 snd-hda-intel
options snd-hda-intel model=auto

After you add those critical last three lines and reboot, if it still doesn't work you should try doing this below:

"That is likely a problem with the dump of the ALSA state. Remove the
file "/var/lib/alsa/asound.state" and run "/etc/rc.d/alsa stop" after
that. Then the current state is dumped into a fresh file and the error
should be gone."
- http://archlinux.2023198.n4.nabble.com/Where-is-the-boot-log-td3380781.html


My Favorite Non-Metal Opeth Videos


Very sad songs. You can kind of see why since the guy who writes most of their music has a depressing view of the world. Can't say I would disagree with him though, just that you probably should try and view it another way:

To lighten things up they once got a pizza delivery on stage:


Five Flames From Software Engineers!

From here: http://www.art.net/~hopkins/Don/text/rms-vs-doctor.html

1: Richard Stallman Verses Birth Announcements

(Kabuki-West is a mailing list for planning dinners and get-togethers in the San Francisco Bay Area)

Could people please not use this list to announce information of no particular interest to the people on the list? Hundreds of thousands of babies are born every day. While the whole phenomenon is menacing, one of them by itself is not newsworthy. Nor is it a difficult achievement--even some fish can do it. (Now, if you were a seahorse, it would be more interesting, since it would be the male that gave birth.)

Following your example, I might send the list an announcement whenever a new GNU program is written. That happens less often than babies are born, it does the world a lot more good, it reflects more conscious creativity and hard work, and some of the readers might actually find the information useful. Even so, I think most of the readers would consider this outside the scope and purpose of the list. Clearly that goes double for babies.

Of course, we have another place for announcements of new GNU programs. If some people like to read birth announcements, perhaps you should set up a suitable list or newsgroup. Perhaps rec.births? (While you're at it, start rec.deaths for obituaries--they're usually more interesting to read.)

These birth announcements also spread the myth that having a baby is something to be proud of, which fuels natalist pressure, which leads to pollution, extinction of wildlife, poverty, and ultimately mass starvation.

Perhaps the people who have decided to have no children should start making proud announcements, so as to set a better example. I could start. I'm sure everyone on this list will be glad to know I don't plan to reproduce myself.

Kabuki-West Replies: In summary:
  • Richard: Fuck off. -Eliot Lear
  • Fuck you. -Paul Traina
    • No, thanks. I don't want to have children. -RMS
      • good -Peter Shipley
  • Fuck you, Richard. -Brent Chapman
    • Boy, I really am getting popular. I haven't had so many offers before in just one day. -RMS
      • You mean that you are in no danger of getting laid. -Elaine Richards
  • Richard, You appear to be unclear on the concept. -Joe Buck
  • Richard, what Paul and Brent so succinctly expressed is quite approprate. ... To sum up: Fuck you. -David Muir Sharnoff
  • Please send your "fucks" via personal mail and refrain from using Kabuki-west for such messages. -Lile Elam
  • It appears that the problem of natalism is even worse than I thought. -RMS
  • Perhaps some people took my message as an expression of personal hostility. It was not based on hostility, just annoyance at a general practice on the occasion of one instance. If anyone felt bad because of misunderstanding this, I regret the unintended result, and I hope this message corrects the matter. -RMS
  • Wow, I think yall who sent "fucks" to the mailing list need to go back and re read RMS's msg. Has breeding become such a religion that the mere mention of a an oposing view ignites a fury of vile replies? If those people who sent "fucks" really want to feel strongly about something, maybe they should move to Iran and start worshiping Kholmeni or something. -Edjik
  • You people just have no sense of humor. I thought the original message was pretty funny and made a few good points (if it didn't, nobody would have been offended). I guess it's a shock for smug self-righteous breeders to learn that not everybody in the world thinks babies are cute and special. -Wayne A. Christopher
    • Finally, someone read the message as it was intended to be read. -RMS
  • No, I think you are correct about the purpose of the list, but parents seem to be so flushed with hormones after they have managed to accomplish the same act that single celled life does, that they revert to the brain level of that afore-mentioned life. I appreciate your choice, the same one that I and my partner have made. -Doug Faunt
  • I'm somewhat surprised by the idea that a mere message from me could torpedo the happiness of parents. I'd think it wouldn't even come close to doing that. Not that I wanted to do that. The most I thought it could do was to discourage the posting birth announcements. -RMS


Next, from here: http://oreilly.com/catalog/opensources/book/appa.html

2: Linus Torvalds Flames Andy Tenenbaum (who criticized the Linux kernel for its monolithic architecture and portability)

"I was in the U.S. for a couple of weeks, so I haven't commented much on LINUX (not that I would have said much had I been around), but for what it is worth, I have a couple of comments now."

"As most of you know, for me MINIX is a hobby, something that I do in the evening when I get bored writing books and there are no major wars, revolutions, or senate hearings being televised live on CNN. My real job is a professor and researcher in the area of operating systems......"

You use this as an excuse for the limitations of minix? Sorry, but you loose: I've got more excuses than you have, and linux still beats the pants of minix in almost all areas. Not to mention the fact that most of the good code for PC minix seems to have been written by Bruce Evans.

Re 1: you doing minix as a hobby - look at who makes money off minix, and who gives linux out for free. Then talk about hobbies. Make minix freely available, and one of my biggest gripes with it will disappear. Linux has very much been a hobby (but a serious one: the best type) for me: I get no money for it, and it's not even part of any of my studies in the university. I've done it all on my own time, and on my own machine.

Re 2: your job is being a professor and researcher: That's one hell of a good excuse for some of the brain-damages of minix. I can only hope (and assume) that Amoeba doesn't suck like minix does.


If I had made an OS that had problems with a multithreading filesystem, I wouldn't be so fast to condemn others: in fact, I'd do my damndest to make others forget about the fiasco. [ yes, I know there are multithreading hacks for minix, but they are hacks, and bruce evans tells me there are lots of race conditions ]


Next, from here: http://esr.ibiblio.org/?p=208

3: Eric S. Raymond Response to Microsoft Recruiter (Mike Walters)

From: "Mike Walters (Search Wizards)"


I am a member of the Microsoft Central Sourcing Team. Microsoft is
seeking world class engineers to help create products that help people
and businesses throughout the world realize their full potential.

Your name and contact info was brought to my attention as someone who
could potentially be a contributor at Microsoft. I would love an
opportunity to speak with you in detail about your interest in a career
at Microsoft, along with your experience, background and qualifications...


Mike Walters
CST Senior Recruiter

One Microsoft Way
Redmond, WA 98052

Eric Raymond: "I called Mike Walters, who told me my name had been passed to him by his research team. I indicated to him that I thought somebody was probably having a little joke at his expense, and promised him an email reply. Here is my reply in its entirety":

To: "Mike Walters (Search Wizards)"

I'd thank you for your offer of employment at Microsoft, except
that it indicates that either you or your research team (or both)
couldn't get a clue if it were pounded into you with baseball bats.
What were you going to do with the rest of your afternoon, offer jobs
to Richard Stallman and Linus Torvalds? Or were you going to stick to
something easier, like talking Pope Benedict into presiding at a
Satanist orgy?

If you had bothered to do five seconds of background checking, you
might have discovered that I am the guy who responded to Craig
Mundie's "Who are you?" with "I'm your worst nightmare", and that I've
in fact been something pretty close to your company's worst nightmare
since about 1997. You've maybe heard about this "open source" thing?
You get one guess who wrote most of the theory and propaganda for it
and talked IBM and Wall Street and the Fortune 500 into buying in.
But don't think I'm trying to destroy your company. Oh, no; I'd be
just as determined to do in any other proprietary-software monopoly,
and the community I helped found is well on its way to accomplishing
that goal.

On the day *I* go to work for Microsoft, faint oinking sounds will be
heard from far overhead, the moon will not merely turn blue but
develop polkadots, and hell will freeze over so solid the brimstone
will go superconductive.

But I must thank you for dropping a good joke on my afternoon. On
that hopefully not too far distant day that I piss on Microsoft's
grave, I sincerely hope none of it will splash on you.

Cordially yours,
Eric S. Raymond


Next, from: http://thread.gmane.org/gmane.linux.kernel/1063230

4: Torvalds Verses Poettering On Kernel Space Verses User Space Modification (this was about a recently released kernel patch to improve performance)

On Tue, Nov 16, 2010 at 9:03 AM, Lennart Poettering
0pointer.de> wrote:
> Binding something like this to TTYs is just backwards.

Numbers talk, bullshit walks.

The numbers have been quoted. The clear interactive behavior has been seen.

And you're just full of bullshit.

Come back when you have something working and with numbers and better
interactive performance. Until then, nobody cares.


On Tue, 16.11.10 09:11, Linus Torvalds (torvalds linux-foundation.org) wrote:

> On Tue, Nov 16, 2010 at 9:03 AM, Lennart Poettering
> 0pointer.de> wrote:
> >
> > Binding something like this to TTYs is just backwards.
> Numbers talk, bullshit walks.
> The numbers have been quoted. The clear interactive behavior has been seen.

Here's my super-complex patch btw, to achieve exactly the same thing
from userspace without involving any kernel or systemd patching and
kernel-side logic. Simply edit your own ~/.bashrc and add this to the end:

if [ "$PS1" ] ; then
mkdir -m 0700 /sys/fs/cgroup/cpu/user/$$
echo $$ > /sys/fs/cgroup/cpu/user/$$/tasks

Then, as the superuser do this:

mount -t cgroup cgroup /sys/fs/cgroup/cpu -o cpu
mkdir -m 0777 /sys/fs/cgroup/cpu/user

Done. Same effect. However: not crazy.

I am not sure I myself will find the time to prep some 'numbers' for
you. They'd be the same as with the kernel patch anyway. But I am sure
somebody else will do it for you...


Lennart Poettering - Red Hat, Inc.


Next, from here: https://bugzilla.redhat.com/show_bug.cgi?id=638477#c129

5: Lunis Torvalds Vs. Blaming Errors On Other Software (flash player bug in fedora)

Linus Torvalds 2010-11-30 20:50:25 EST

(In reply to comment #128)
> In Adobe's software.
> > I'm no great fan of flash but it's an essential part of life on the web these
> > days and I had thought that the Fedora project had finally put its days of
> > broken flash support behind it.
> Fedora's flash support is fine. Adobe's software is broken.

Quite frankly, I find your attitude to be annoying and downright stupid.

How hard can it be to understand the following simple sentence:


Pushing the blame around doesn't help anybody. The only thing that helps is
Fedora being helpful, not being obstinate.

Also, the fact is, that from a Q&A standpoint, a memcpy() that "just does the
right thing" is simply _better_. Quoting standards is just stupid, when there's
two simple choices: "it works" or "it doesn't work because bugs happen".

Standards are paper. I use paper to wipe my butt every day. That's how much
that paper is worth.

Reality is what matters. When glibc changed memcpy, it created problems. Saying
"not my problem" is irresponsible when it hurts users.

And pointing fingers at Adobe and blaming them for creating bad software is
_doubly_ irresponsible if you are then not willing to set a higher standard for
your own project. And "not my problem" is not a higher standard.

So please just fix it.

The easy and technically nice solution is to just say "we'll alias memcpy to
memmove - good software should never notice, and it helps bad software and a
known problem".


Buddhism Compared with Christianity

I had a long conversation with a friend where I finally came to understand Buddhism as a complete and meaningful philosophy and find it stunningly beautiful. So even though I know very little about Buddhism, I wanted to post something about it and how it first made sense to me. (I think I took so long to understand it because there are just a lot of really bad explanations out there). Also I grew up reading some Christian apologists that did not give it a fair treatment, which may have contributed to the delay. Here are the striking points that came out of our conversation:

1: Possible proofs used for Buddhism and Christianity are similar.
Christians will look at the prophecies in the Bible (just to give an example, but other proofs use similar logic) and make some argument about how this means the Bible is likely be divinely inspired: There was no one previously who was able to predict the future (at least interesting events in the future) so someone who is able to predict the future shows that that person has access to either some controlling or knowledgeable power of the universe that is not of themselves. Since we associate this kind of idea with God the two are easily conflated (and probably for good reason). The majority of us seem to be looking for some kind of external purpose or guidance so it seems reasonable to take that desire and search for something that satisfies it externally. When this is found it is not easily dismissed as a coincidence. Just like when we eat food we do not think that we just happen to enjoy eating food, but that there is an external reason for that desire to have a purpose: namely to prevent starvation, which comes from our evolutionary development. So what is interesting is that one of the things that makes these arguments convincing is the preconceived idea or desire of, or for, an external purpose or guidance. But it is far from being the only thing. There is a narrative in the Bible and God builds up a relationship with the people of Israel and with many of the other characters. So it is also through our view of relationships and trust that we evaluate these arguments.

Similarly, a Buddhist might look at the psychological aspects of Buddhism and conclude that since these ideas of selflessness and acceptance are so helpful and so hard to come by at the time of Buddha, that Buddha must have had contact with some sort of greater power to get this knowledge. Since the more we practice selflessness and acceptance the better we get at it, we can extrapolate and say that it may be possible to attain control over our attitude and reach a state called enlightenment. As for whether there is some sort of narrative in Buddhism, I am not as familiar enough to talk much about the similarities or dissimilarities here. Although, you may be able to draw a parallel between the life of Buddha and how he related to his own emotions and the rest of the world and how he eventually learned to deal with them. There may be more to this than I know.

2: If Buddhism is correct, then all religions are different ways of looking at the same thing (with varying degrees of accuracy).
So with Buddhism, it is essentially your attitude that is most important. No matter what external truth there is, you can eventually create reality in your own head. Two people can look at a field and perceive totally different things depending on their attitudes. Someone in a bad mood can perceive all the unpleasant things, the gravestones and rotting wood, while the other person in a good mood only sees the beauty of the flowers and trees.

Some may protest at this analogy, do the two people really have total control over what they perceive about the field? No, but only because they are not enlightened. This isn't an accurate example though because it seems to imply that Buddhism means changing your perception of reality to be pleasant all the time. It doesn't. A truly enlightened person will not desire to have pleasant things and will not run from suffering. Nevertheless, the point is that if everyone has the ability to control their attitude (at some point) then (at some point) reality will not be important.

Christianity does have some minor similarities in the way it views worry:
“Therefore do not be anxious about tomorrow, for tomorrow will be anxious for itself. Sufficient for the day is its own trouble." (Matthew 6:34) Telling someone not to worry implies that they have control over that part of their attitude.

3: Although the psychological ideas in Buddhism are therapeutic, Buddhism takes the opposite and, some may say, more counterintuitive route than the majority of philosophies.
With Buddhism, what is ultimately important is in your head, not in reality (for your experience at least), unlike in most people's intuitive ideas about what is important.
The idea is that your brain and the rest of reality are one whole which creates your experiences and consciousness. So the idea of influencing your experience can begin by influencing your attitude which is the only part we have direct control over. Just like the famous Buddhist text says:

Where would I find enough leather

To cover the entire surface of the earth?

But with leather soles beneath my feet,

It’s as if the whole world has been covered.

Engaging in Bodhisattva Conduct, V, 13
For some philosophies this may depend on a refutation of the idea of self. If we had a self or a spirit, then there would be no guarantee that it would be completely malleable unlike the material world. If there is no self, it is the interaction of the attitude and reality which create what we mistake for ourselves in which there is nothing that we can't change and influence eventually. There are similar arguments in today's philosophy concerning the idea of consciousness not being dependent on your brain alone: http://www.wnyc.org/shows/lopate/2009/mar/25/i-am-therefore-i-think/ There are some ideas in Christianity that are similar except the change comes from the outside. For instance the idea of internal spiritual rebirth is considered necessary for the ultimate importance: loving God (and hence goodness, look up divine command theory) and the second ultimate importance: salvation. (note these are just my own interpretations of Christianity) I do think Christianity differs from Buddhism in that it doesn't look at reality as being totally unimportant for the ultimate human experience. Christianity has a hell and heaven, and Buddhism (or some forms of it) have several. But the purposes of those hells and heavens are different. In Buddhism it is just part of the cycle, you are repaid for good karma or bad karma and there is no importance or meaning placed on staying in any particular part of the cycle. Instead reaching enlightenment and escaping the cycle is the goal (sort of, but you cannot really desire that either). With Christianity heaven and hell are places where justice is served.

4: One issue with Buddhism I have to think more about.
The most convincing argument for Buddhism that I have seen so far is that it is psychologically very therapeutic and that it would be very difficult to come to these conclusions about psychology before psychological studies.

Now the problem I have with this is that not only does Buddhism have you think of these things in this way for psychological purposes but it asserts that they are true, the denial of self, the assertion of your ability to control your attitude perfectly etc ... The thing is that psychology is notoriously tricky. We have a multitude of thinking traps where believing the wrong thing is actually beneficial. For instance, with the planning fallacy it is beneficial to believe that you have less time to do a task than you actually do. Another problem is that different ways of thinking about things in psychology may be more or less helpful for different types of people.

On the other hand there may be reason to think that these same things apply to science or any other discipline since we always work within the confines of our psychology. For instance, in science it may be beneficial for the understanding and modeling of quantum mechanics to have an interpretation of quantum mechanics that is easier to understand, but is actually much further from the truth, since science does not really deal with truth, just whether a model works well, and quantum mechanics is mathematics not any pithy analogies we can come up with for how it works. This goes even more so for history because it is a less testable discipline.

One question you have to answer before comparing the evidence for Buddhism and Christianity is: Is there less bias in our knowledge of history (the main place where most Christians draw their evidence from) than there is difference between the therapeutic methods of psychology and the actual truth? If this question cannot be solved through philosophy (in my mind that means being elucidated enough so that common sense pulls us easily one way or the other) then you just have to go with whichever answer is more intuitive.

Closing thoughts:
I am probably going to have to write another post correcting all the errors about Buddhism I made in this one. I will put a link to that at the end when I do. I have gotten basically all of my information from talking to a Buddhist (who himself has said that he is bad at explaining things about religion and expressing himself) But this is the first time I have understood Buddhism as a complete and beautiful philosophy and I felt like I needed to post something because I am kind of excited.