TextMate 1 on Yosemite

I’m still using TextMate 1.x and therefore need Ruby 1.8 to use the subversion bundle.

It seems that the quickest workaround to get this working on OS X 10.10 Yosemite is to compile and install Ruby 1.8

Here are the brief instructions.

You will need a compiler. So, you’ll need XCode and maybe X11.

http://xquartz.macosforge.org/downloads/SL/XQuartz-2.7.7.dmg

Get the source code:

mkdir -p ~/src/ruby
cd ~/src/ruby
svn co http://svn.ruby-lang.org/repos/ruby/tags/v1_8_7_374
cd v1_8_7_374

Setup your environment

export PATH=/Developer/usr/bin:$PATH
export LDFLAGS=-L/opt/X11/lib
export CPPFLAGS=-I/opt/X11/include

Link autoconf so that it can be found

sudo ln -s /Developer/usr/share/autoconf /usr/share

Configure and build

autoconf
./configure --prefix=/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr
make
make install

MAMP Pro on Mac OS 10.10 Yosemite

MAMP Pro (2.2) has a problem with starting apache. You get an error in the crash log like:

Symbol not found: _iconv
 Referenced from: /usr/lib/libmecabra.dylib
 Expected in: /Applications/MAMP/*/libiconv.2.dylib
 in /usr/lib/libmecabra.dylib

To fix the problem. Have MAMP Pro use the envvars from the built in apache. So, move the MAMP one out of the way:

mv /Applications/MAMP/bin/apache2/bin/envvars /Applications/MAMP/bin/apache2/bin/_envvars

Debian Linux Mac Bluetooth Keyboard

After many years using a Mac and the past few years with a bluetooth keyboard that is almost identical to my Mac Book Air keyboard. I find myself back in the world of linux and a PC keyboard.

After a few hours of just not getting to grips with the spongy and strangely laid out keyboard I plugged in an old Mac aluminium keyboard. The improvement in comfort was immediate and my productivity also increased. However after a day of using the full size keyboard and then going back to the MBA, suddenly I was faced with the CTRL, ALT and FN keys being a bit fiddly to find again.

So. The solution is to convince debian to use my bluetooth keyboard and then apart from the old CTRL-C, SHIFT-CTRL-C, CMD-C issues I’ll be all set.

Getting linux to recognise an old Belkin bluetooth adapter I had lying around seemed easier than I was expecting as there is a lot of bluetooth help around. I opted for blueman in the end.  However getting all the keys to map up was a little more tricky. There is a character map for the full size Apple keyboard, but I couldn’t find one for the Apple bluetooth keyboard.

After some fiddling with various character maps and reconfiguring with various amounts of failure. I created my own map. The main key mix ups are the §± and `~ keys.

Attached at the bottom is the keymap file to fix these issues. (It will also reverse the mouse scroll too). I say attached. WordPress did not allow me to upload a txt file. So, it’s appended at the bottom.  Keycode 49 and 94 are the main changes.

To install/get working. Move the file to ~/.Xmodmap

Create a ~/.xinitrc file and add:

if [ -s ~/.Xmodmap ]; then
xmodmap ~/.Xmodmap
fi

To test you can simply run: xmodmap ~/.Xmodmap

Or reboot.

pointer = 1 2 3 5 4 7 6 8 9 10 11 12
keycode 8 =
keycode 9 = Escape NoSymbol Escape
keycode 10 = 1 exclam 1 exclam
keycode 11 = 2 at 2 at EuroSign EuroSign EuroSign EuroSign
keycode 12 = 3 numbersign 3 numbersign sterling sterling sterling sterling
keycode 13 = 4 dollar 4 dollar
keycode 14 = 5 percent 5 percent
keycode 15 = 6 asciicircum 6 asciicircum
keycode 16 = 7 ampersand 7 ampersand
keycode 17 = 8 asterisk 8 asterisk
keycode 18 = 9 parenleft 9 parenleft
keycode 19 = 0 parenright 0 parenright
keycode 20 = minus underscore minus underscore
keycode 21 = equal plus equal plus
keycode 22 = BackSpace BackSpace BackSpace BackSpace
keycode 23 = Tab ISO_Left_Tab Tab ISO_Left_Tab
keycode 24 = q Q q Q
keycode 25 = w W w W
keycode 26 = e E e E
keycode 27 = r R r R
keycode 28 = t T t T
keycode 29 = y Y y Y
keycode 30 = u U u U
keycode 31 = i I i I
keycode 32 = o O o O
keycode 33 = p P p P
keycode 34 = bracketleft braceleft bracketleft braceleft
keycode 35 = bracketright braceright bracketright braceright
keycode 36 = Return NoSymbol Return
keycode 37 = Control_L NoSymbol Control_L
keycode 38 = a A a A
keycode 39 = s S s S
keycode 40 = d D d D
keycode 41 = f F f F
keycode 42 = g G g G
keycode 43 = h H h H
keycode 44 = j J j J
keycode 45 = k K k K
keycode 46 = l L l L
keycode 47 = semicolon colon semicolon colon
keycode 48 = apostrophe quotedbl apostrophe quotedbl
keycode 49 = section plusminus section plusminus
keycode 50 = Shift_L NoSymbol Shift_L
keycode 51 = backslash bar backslash bar
keycode 52 = z Z z Z
keycode 53 = x X x X
keycode 54 = c C c C
keycode 55 = v V v V
keycode 56 = b B b B
keycode 57 = n N n N
keycode 58 = m M m M
keycode 59 = comma less comma less
keycode 60 = period greater period greater
keycode 61 = slash question slash question
keycode 62 = Shift_R NoSymbol Shift_R
keycode 63 = KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply XF86ClearGrab
keycode 64 = Alt_L Meta_L Alt_L Meta_L
keycode 65 = space NoSymbol space
keycode 66 = Caps_Lock NoSymbol Caps_Lock
keycode 67 = F1 F1 F1 F1 F1 F1 XF86Switch_VT_1
keycode 68 = F2 F2 F2 F2 F2 F2 XF86Switch_VT_2
keycode 69 = F3 F3 F3 F3 F3 F3 XF86Switch_VT_3
keycode 70 = F4 F4 F4 F4 F4 F4 XF86Switch_VT_4
keycode 71 = F5 F5 F5 F5 F5 F5 XF86Switch_VT_5
keycode 72 = F6 F6 F6 F6 F6 F6 XF86Switch_VT_6
keycode 73 = F7 F7 F7 F7 F7 F7 XF86Switch_VT_7
keycode 74 = F8 F8 F8 F8 F8 F8 XF86Switch_VT_8
keycode 75 = F9 F9 F9 F9 F9 F9 XF86Switch_VT_9
keycode 76 = F10 F10 F10 F10 F10 F10 XF86Switch_VT_10
keycode 77 = Num_Lock NoSymbol Num_Lock
keycode 78 = Scroll_Lock NoSymbol Scroll_Lock
keycode 79 = KP_Home KP_7 KP_Home KP_7
keycode 80 = KP_Up KP_8 KP_Up KP_8
keycode 81 = KP_Prior KP_9 KP_Prior KP_9
keycode 82 = KP_Subtract KP_Subtract KP_Subtract KP_Subtract KP_Subtract KP_Subtract XF86Prev_VMode
keycode 83 = KP_Left KP_4 KP_Left KP_4
keycode 84 = KP_Begin KP_5 KP_Begin KP_5
keycode 85 = KP_Right KP_6 KP_Right KP_6
keycode 86 = KP_Add KP_Add KP_Add KP_Add KP_Add KP_Add XF86Next_VMode
keycode 87 = KP_End KP_1 KP_End KP_1
keycode 88 = KP_Down KP_2 KP_Down KP_2
keycode 89 = KP_Next KP_3 KP_Next KP_3
keycode 90 = KP_Insert KP_0 KP_Insert KP_0
keycode 91 = KP_Delete KP_Decimal KP_Delete KP_Decimal
keycode 92 = ISO_Level3_Shift NoSymbol ISO_Level3_Shift
keycode 93 =
keycode 94 = grave asciitilde grave asciitilde
keycode 95 = F11 F11 F11 F11 F11 F11 XF86Switch_VT_11
keycode 96 = F12 F12 F12 F12 F12 F12 XF86Switch_VT_12
keycode 97 =
keycode 98 = Katakana NoSymbol Katakana
keycode 99 = Hiragana NoSymbol Hiragana
keycode 100 = Henkan_Mode NoSymbol Henkan_Mode
keycode 101 = Hiragana_Katakana NoSymbol Hiragana_Katakana
keycode 102 = Muhenkan NoSymbol Muhenkan
keycode 103 =
keycode 104 = KP_Enter NoSymbol KP_Enter
keycode 105 = Control_R NoSymbol Control_R
keycode 106 = KP_Divide KP_Divide KP_Divide KP_Divide KP_Divide KP_Divide XF86Ungrab
keycode 107 = Print Sys_Req Print Sys_Req
keycode 108 = Alt_R Meta_R Alt_R Meta_R
keycode 109 = Linefeed NoSymbol Linefeed
keycode 110 = Home NoSymbol Home
keycode 111 = Up NoSymbol Up
keycode 112 = Prior NoSymbol Prior
keycode 113 = Left NoSymbol Left
keycode 114 = Right NoSymbol Right
keycode 115 = End NoSymbol End
keycode 116 = Down NoSymbol Down
keycode 117 = Next NoSymbol Next
keycode 118 = Insert NoSymbol Insert
keycode 119 = Delete NoSymbol Delete
keycode 120 =
keycode 121 = XF86AudioMute NoSymbol XF86AudioMute
keycode 122 = XF86AudioLowerVolume NoSymbol XF86AudioLowerVolume
keycode 123 = XF86AudioRaiseVolume NoSymbol XF86AudioRaiseVolume
keycode 124 = XF86PowerOff NoSymbol XF86PowerOff
keycode 125 = KP_Equal NoSymbol KP_Equal
keycode 126 = plusminus NoSymbol plusminus
keycode 127 = Pause Break Pause Break
keycode 128 = XF86LaunchA NoSymbol XF86LaunchA
keycode 129 = KP_Decimal KP_Decimal KP_Decimal KP_Decimal
keycode 130 = Hangul NoSymbol Hangul
keycode 131 = Hangul_Hanja NoSymbol Hangul_Hanja
keycode 132 =
keycode 133 = Super_L NoSymbol Super_L
keycode 134 = Super_R NoSymbol Super_R
keycode 135 = Menu NoSymbol Menu
keycode 136 = Cancel NoSymbol Cancel
keycode 137 = Redo NoSymbol Redo
keycode 138 = SunProps NoSymbol SunProps
keycode 139 = Undo NoSymbol Undo
keycode 140 = SunFront NoSymbol SunFront
keycode 141 = XF86Copy NoSymbol XF86Copy
keycode 142 = SunOpen NoSymbol SunOpen
keycode 143 = XF86Paste NoSymbol XF86Paste
keycode 144 = Find NoSymbol Find
keycode 145 = XF86Cut NoSymbol XF86Cut
keycode 146 = Help NoSymbol Help
keycode 147 = XF86MenuKB NoSymbol XF86MenuKB
keycode 148 = XF86Calculator NoSymbol XF86Calculator
keycode 149 =
keycode 150 = XF86Sleep NoSymbol XF86Sleep
keycode 151 = XF86WakeUp NoSymbol XF86WakeUp
keycode 152 = XF86Explorer NoSymbol XF86Explorer
keycode 153 = XF86Send NoSymbol XF86Send
keycode 154 =
keycode 155 = XF86Xfer NoSymbol XF86Xfer
keycode 156 = XF86Launch1 NoSymbol XF86Launch1
keycode 157 = XF86Launch2 NoSymbol XF86Launch2
keycode 158 = XF86WWW NoSymbol XF86WWW
keycode 159 = XF86DOS NoSymbol XF86DOS
keycode 160 = XF86ScreenSaver NoSymbol XF86ScreenSaver
keycode 161 =
keycode 162 = XF86RotateWindows NoSymbol XF86RotateWindows
keycode 163 = XF86Mail NoSymbol XF86Mail
keycode 164 = XF86Favorites NoSymbol XF86Favorites
keycode 165 = XF86MyComputer NoSymbol XF86MyComputer
keycode 166 = XF86Back NoSymbol XF86Back
keycode 167 = XF86Forward NoSymbol XF86Forward
keycode 168 =
keycode 169 = XF86Eject NoSymbol XF86Eject
keycode 170 = XF86Eject XF86Eject XF86Eject XF86Eject
keycode 171 = XF86AudioNext NoSymbol XF86AudioNext
keycode 172 = XF86AudioPlay XF86AudioPause XF86AudioPlay XF86AudioPause
keycode 173 = XF86AudioPrev NoSymbol XF86AudioPrev
keycode 174 = XF86AudioStop XF86Eject XF86AudioStop XF86Eject
keycode 175 = XF86AudioRecord NoSymbol XF86AudioRecord
keycode 176 = XF86AudioRewind NoSymbol XF86AudioRewind
keycode 177 = XF86Phone NoSymbol XF86Phone
keycode 178 =
keycode 179 = XF86Tools NoSymbol XF86Tools
keycode 180 = XF86HomePage NoSymbol XF86HomePage
keycode 181 = XF86Reload NoSymbol XF86Reload
keycode 182 = XF86Close NoSymbol XF86Close
keycode 183 =
keycode 184 =
keycode 185 = XF86ScrollUp NoSymbol XF86ScrollUp
keycode 186 = XF86ScrollDown NoSymbol XF86ScrollDown
keycode 187 = parenleft NoSymbol parenleft
keycode 188 = parenright NoSymbol parenright
keycode 189 = XF86New NoSymbol XF86New
keycode 190 = Redo NoSymbol Redo
keycode 191 = XF86Tools NoSymbol XF86Tools
keycode 192 = XF86Launch5 NoSymbol XF86Launch5
keycode 193 = XF86Launch6 NoSymbol XF86Launch6
keycode 194 = XF86Launch7 NoSymbol XF86Launch7
keycode 195 = XF86Launch8 NoSymbol XF86Launch8
keycode 196 = XF86Launch9 NoSymbol XF86Launch9
keycode 197 =
keycode 198 =
keycode 199 = XF86TouchpadToggle NoSymbol XF86TouchpadToggle
keycode 200 = XF86TouchpadOn NoSymbol XF86TouchpadOn
keycode 201 = XF86TouchpadOff NoSymbol XF86TouchpadOff
keycode 202 =
keycode 203 = Mode_switch NoSymbol Mode_switch
keycode 204 = NoSymbol Alt_L NoSymbol Alt_L
keycode 205 = NoSymbol Meta_L NoSymbol Meta_L
keycode 206 = NoSymbol Super_L NoSymbol Super_L
keycode 207 = NoSymbol Hyper_L NoSymbol Hyper_L
keycode 208 = XF86AudioPlay NoSymbol XF86AudioPlay
keycode 209 = XF86AudioPause NoSymbol XF86AudioPause
keycode 210 = XF86Launch3 NoSymbol XF86Launch3
keycode 211 = XF86Launch4 NoSymbol XF86Launch4
keycode 212 = XF86LaunchB NoSymbol XF86LaunchB
keycode 213 = XF86Suspend NoSymbol XF86Suspend
keycode 214 = XF86Close NoSymbol XF86Close
keycode 215 = XF86AudioPlay NoSymbol XF86AudioPlay
keycode 216 = XF86AudioForward NoSymbol XF86AudioForward
keycode 217 =
keycode 218 = Print NoSymbol Print
keycode 219 =
keycode 220 = XF86WebCam NoSymbol XF86WebCam
keycode 221 =
keycode 222 =
keycode 223 = XF86Mail NoSymbol XF86Mail
keycode 224 = XF86Messenger NoSymbol XF86Messenger
keycode 225 = XF86Search NoSymbol XF86Search
keycode 226 = XF86Go NoSymbol XF86Go
keycode 227 = XF86Finance NoSymbol XF86Finance
keycode 228 = XF86Game NoSymbol XF86Game
keycode 229 = XF86Shop NoSymbol XF86Shop
keycode 230 =
keycode 231 = Cancel NoSymbol Cancel
keycode 232 = XF86MonBrightnessDown NoSymbol XF86MonBrightnessDown
keycode 233 = XF86MonBrightnessUp NoSymbol XF86MonBrightnessUp
keycode 234 = XF86AudioMedia NoSymbol XF86AudioMedia
keycode 235 = XF86Display NoSymbol XF86Display
keycode 236 = XF86KbdLightOnOff NoSymbol XF86KbdLightOnOff
keycode 237 = XF86KbdBrightnessDown NoSymbol XF86KbdBrightnessDown
keycode 238 = XF86KbdBrightnessUp NoSymbol XF86KbdBrightnessUp
keycode 239 = XF86Send NoSymbol XF86Send
keycode 240 = XF86Reply NoSymbol XF86Reply
keycode 241 = XF86MailForward NoSymbol XF86MailForward
keycode 242 = XF86Save NoSymbol XF86Save
keycode 243 = XF86Documents NoSymbol XF86Documents
keycode 244 = XF86Battery NoSymbol XF86Battery
keycode 245 = XF86Bluetooth NoSymbol XF86Bluetooth
keycode 246 = XF86WLAN NoSymbol XF86WLAN
keycode 247 =
keycode 248 =
keycode 249 =
keycode 250 =
keycode 251 =
keycode 252 =
keycode 253 =
keycode 254 =
keycode 255 =

This week’s jam: Raspberry and apple

image

After successful micro-jamming of raspberry and then raspberry and blueberry. This week I’m trying raspberry and apple.

200g raspberries
120g grated bramley apple
300g jam sugar
Lemon juice.

I slowly heated all the ingredients and stirred regularly making sure not to rapidly boil as the apple needed to be cooked. This took around 12 minutes to cook the apples and have a good consistency.

This made two jars of jam. I’ll find out how good it tastes tomorrow.

Micro Batch Jam

2014-04-26 14.38.12

I recently picked up from Nisbets some Kilner bottles primarily for BBQ sauce and whilst browsing I picked up some clip top preserve jars.  It looks like I needed to make something to fill the jars. My first thought was jam. But how to you make small batch jam? What if you only want to fill one jar?

After browsing and searching for a while it seemed like the easiest thing to make micro batch jam. Preserving with sugar couldn’t be simpler.

The basic formula seems to be 1 part fruit to 1 part sugar. If you use jam sugar it will have pectin already added. The next thing to note is that you don’t need to boil for a long time and not even particularly vigorous. The jam needs to be boiled to 105˚C. Thats about it. Well, another thing to point out is that you don’t need to boil the jars or sterilise them like its the 1950’s. Wash the jars in the dishwasher and pour the boiling jam in. It will do, the jam will only last a week or two at most. This is micro batch jamming, not long term preserving.

Ingredients

  • A small punnet of  raspberries 185g
  • 185g jam sugar
  • 1 tsp lemon juice

Method

Add the fruit and sugar to a small heavy bottomed pan.  On a medium-high heat, heat up the pan and once it starts bubbling and or spitting, turn down the heat and gently heat to 105˚C. Stirring often.

Remove from the heat and stir in the lemon juice. Then pour into a jar.

Once cooled pop it in the fridge.  Job done.
2014-04-26 14.38.20 2014-04-26 14.39.06

More TextMate subversion Ruby problems after recent upgrade

After the recent upgrade it seems that TextMate and Ruby are no longer friends.

Are you seeing errors like:

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': /Applications/TextMate.app/Contents/SharedSupport/Support/lib/shelltokenize.rb:74: invalid multibyte escape: /[^\w_\-\+=\/\x7F-\xFF]/ (SyntaxError) from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require’ from /Applications/TextMate.app/Contents/SharedSupport/Bundles/Subversion.tmbundle/Support/format_status.rb:4:in `

I think I have a more permanent fix this time. If you read my previous post you sill see that the moving the current Ruby link is no longer working. Also, if you set the TM_RUBY variable, this too does not fix the problem.

Todays workaround is to update the PATH environment variable within TextMate to include Ruby 1.8 fist in the list.

To do this:

  1. Open TextMate
  2. Open the preferences pane  TextMate -> Preferences
  3. Select the Advanced tab
  4. Select Shell Variables
  5. Edit the PATH variable. Add to the beginning
    • /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin:
  6. Done.

Yosemite Update

See http://hootbah.co.uk/2014/10/22/textmate-1-on-yosemite/

TextMate svn log output problems

Since thew upgrade to Mavericks the output from the subversion log command in TextMate has not worked correctly. It seems that the problem is caused by a change to the xml output from subversion which the TextMate format log script is not picking up.

Essentially the problem is the encoding line has changed from utf-8 to UTF-8.

To fix the problem edit the file: /Applications/TextMate.app/Contents/SharedSupport/Bundles/Subversion.tmbundle/Support/format_log_xml.rb  To edit in TextMate this would be:

mate /Applications/TextMate.app/Contents/SharedSupport/Bundles/Subversion.tmbundle/Support/format_log_xml.rb

Change line 151 from:

if line =~ /^(.*)<\?xml version="1\.0"( encoding="utf-8")?\?>$/

to:

if line =~ /^(.*)<\?xml version="1\.0"((?i) encoding="utf-8")?\?>$/

The log format should be back.