Lojic Technologies

Posts Tagged ‘osx

Switching from CarbonEmacs to Emacs.app

with one comment

Thanks to a tip from David Joyner, I discovered that the current version of Emacs will easily build an Emacs.app application for Mac OSX i.e. I no longer need to install the CarbonEmacs application. I’m thankful to Seiji Zenitani for creating CarbonEmacs, but I’m glad to be able to build the app directly from the latest Emacs source code.

Here’s what I did:

Get the source code and build it

git clone git://git.savannah.gnu.org/emacs.git
cd emacs
./configure --with-ns
make install

Copy Emacs.app to Applications

Drag nextstep/Emacs.app to Applications

Modify Emacs config files

I had several configuration items I needed to adjust.

carbon-emacs-package-add-to-path no longer exists

I used the above command to set the path to allow running programs via shell-command as follows:

(carbon-emacs-package-add-to-path "/Users/badkins/sync/bin")
(defun my-fun ()
  (shell-command "my_ruby_script.rb"))

I found a comment by Alex Payne on Ola Bini’s blog that provided an equivalent for Emacs.app:

(setq path "/Users/badkins/sync/bin")
(setenv "PATH" path)

Use command for meta instead of alt/option

The newly built Emacs.app used the alt/option key for meta instead of the command key that I was used to with CarbonEmacs. The following (found on Hacker News) took care of that:

(setq ns-command-modifier 'meta)

Prior to the above, I had tried the following. It worked, but was more verbose:

(setq mac-option-key-is-meta nil)
(setq mac-command-key-is-meta t)
(setq mac-command-modifier 'meta)
(setq mac-option-modifier nil)

Allow use of command-h to minimize Emacs

After the above fix for the command key, I could no longer minimize Emacs via command-h because Emacs mapped M-h to a command. The following key binding allowed using M-h to minimize again:

(global-set-key (kbd "M-h") 'ns-do-hide-emacs)

Customize exec-path variable

I was having difficulty using the built-in vc git support. It turns out that Emacs wasn’t able to find the git command because it wasn’t in the exec-path. I customized the exec-path variable to include /opt/local/bin where git resides as follows (it’s within the custom-set-variables invocation):

 '(exec-path (quote ("/usr/bin" "/bin" "/usr/sbin" "/sbin" "/Applications/Emacs.app/Contents/MacOS/bin" "/opt/local/bin")))

Emacs is Awesome

That was all it took to get the latest Emacs up and running equivalently to CarbonEmacs for me. I’m more pleased with Emacs today than when I started using it in earnest in 2008. I’m continually learning new things to be more productive. There are just so many things that it does very well, and it’s so extensible and introspective.

Written by Brian Adkins

March 17, 2010 at 12:42 am

Posted in programming

Tagged with ,

Beware of LEGO Mindstorms NXT on Mac OSX

with 10 comments

I recently installed the software that came with a LEGO Mindstorms NXT kit onto a Mac Mini running OSX 10.4. I was somewhat concerned when the install program prompted me for an admin password, so I attempted to install the software into a directory in my home directory instead of the main Applications directory, but it still prompted for an admin password. Since LEGO is a large reputable company, I gave them the benefit of the doubt and figured the admin password may have been necessary to install Bluetooth drivers or some other feature. I should’ve learned a lesson from the Sony root kit debacle with respect to blindly trusting large corporations. In the Sony case, maliciousness was involved, in the LEGO Mindstorms case, I think only incompetence is to blame.

After installing the LEGO Mindstorms NXT software, I noticed that the OSX Activity Monitor failed to start which was puzzling. I also noticed that my Missing Sync program (used to synchronize data on my Treo 650 with the Mac) was failing as well – probably related to Bluetooth misconfiguration. I discovered later that, independently of the software issue, the LEGO Mindstorms NXT kit was malfunctioning (some attachments worked, but the motors couldn’t be activated), so we sent it back for an exchange.

I thought that uninstalling the LEGO Mindstorms NXT software might return my Mac OSX system to normal, so I found the uninstall shell script in the Applications directory. With many OSX applications, it’s sufficient to simply delete the directory associated with the particular application from the Applications directory, but since Bluetooth drivers (and possibly other stuff) was installed, I figured the uninstall script would remove anything that was installed. I viewed the contents of the script briefly, but I was in a particular hurry at the time, so I double-clicked the icon for the uninstall script before I thoroughly reviewed it. It took longer to execute than I expected, and to my great dismay I shortly discovered why.

The LEGO Mindstorms NXT uninstall script removed the entire Applications directory from my Mac OSX system!

I’ve contacted technical support at LEGO Mindstorms mainly to try and determine how this happened. One of the reps did admit that this has happened before. I’m not sure what they could do to resolve this to my satisfaction other than pay me for the time I’ve lost in trying to get the Mac back to normal. I’ve been able to get the bundled applications reinstalled with some effort, but I still have a fair amount of work to do to reinstall many open source apps.

If LEGO Mindstorms comes up with a creative solution to resolve this to my satisfaction, I’ll be elated to post an update, but I expect that to be unlikely to say the least. Hopefully this blog post can save at least one person from losing an entire day to a similar problem.

When the replacement LEGO Mindstorms NXT kit arrives I’m either going to install the software on an old Windows PC, or create a new virtual machine for that purpose, but I don’t think I can trust LEGO Mindstorms enough to install it on an important computer at this point. Regardless, I’m going to be much more careful (paranoid?) when installing software that requires root access in the future.

Update 1/18/2008: It’s been ten days since I originally called LEGO Mindstorms NXT technical support, and I haven’t received a call from a supervisor or level 2 person as was promised. I just called them again and talked to the same person who opened the ticket originally. He still refuses to allow me to talk with his supervisor (actually, he states he doesn’t have a supervisor, and that level 2 is his “supervisor”) and simply repeats the same mantra about how my issue has “been escalated several levels”. I can’t recall a tech support experience that has been quite this bad.

Update 1/18/2008 13:00: I just received the following email response a few minutes ago (probably because I communicated the situation to LEGO corporate headquarters).


Your issue has been escalated to the developers in Denmark.
They will get back to you, but we have no control over when that will happen.

In the meantime the only solutions we can offer to you are to repair user permissions and to do an archive reinstall of your Operating System.

Update 1/24/2008 14:10: Just spoke with David C. from LEGO Mindstorms NXT QA (he was referred to me by a LEGO consumer specialist I had spoken to a couple days ago), and he explained the situation to me. This was a known issue (deleting all your apps on Mac OSX) that has apparently been fixed in the current release of the software. He apologized and will send me a free LEGO Mindstorms NXT kit. It doesn’t match the monetary loss in time, but it’s a nice gesture and I appreciate it. I expect it’s more than many companies would do to remedy the situation.

As to the communication issues with the first line technical support, out of respect for David I won’t go into detail, but suffice it to say that they are aware of issues with their front line support and are endeavoring to correct them.

Written by Brian Adkins

January 8, 2008 at 6:19 pm

Posted in programming, technology

Tagged with , ,